CMake教程6:CMake的一些实用小技巧

简介: CMake教程6:CMake的一些实用小技巧

设置lib输出目录

set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
复制代码

将生成的lib放在bin目录下

设置app输出目录

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
复制代码

将生成的可执行程序放在bin目录下

自动收集目录下的源代码

  • 方式1:
aux_source_directory(./ SRC)
复制代码

自动将指定目录下的源文件路径,以list的形式存放在指定的变量中。

缺点: 无法递归,但可以配合foreach实现、只能检索*.cpp文件。

  • 方式2:
# 将所有的头文件收集起来放在src变量里面,无法递归
file(GLOB src ${CMAKE_CURRENT_LIST_DIR}/*.h)
# 将所有的头文件、源文件收集起来放在src变量里面,无法递归
file(GLOB src ${CMAKE_CURRENT_LIST_DIR}/*.h ${CMAKE_CURRENT_LIST_DIR}/*.cpp)
# 将所有的头文件收集起来放在src变量里面,可以递归文件
file(GLOB_RECURSE src ${CMAKE_CURRENT_LIST_DIR}/*.h)
复制代码

添加源文件2种方式

  • 方式1
set(LIB_NAME "lib")
aux_source_directory(./ SRC)
# 在add的时候添加source
add_library(${LIB_NAME} ${SRC})
复制代码
  • 方式2
set(LIB_NAME "lib")
add_library(${LIB_NAME})
aux_source_directory(./ SRC)
# 使用单独的api设置
target_sources(${LIB_NAME} PRIVATE ${SRC})
复制代码

为指定的目标设置源文件

set(src)
include(a/CMakeLists.txt)
target_sources(${app} PRIVATE ${src})
复制代码

如果源代码比较分散,分布在不同的CMakeLists中,在add_libraryadd_executeable不设置源文件,通过自定义src变量进行收集再进行设置。

  • a/CMakeLists.txt
list(APPEND src others.cpp) # 追加源文件
复制代码


目录
相关文章
|
7月前
|
缓存 Unix 程序员
CMake 教程1
CMake 教程
105 1
|
7月前
|
Dart IDE Unix
CMake 教程3
CMake 教程
85 1
|
7月前
CMake 教程2
CMake 教程
55 0
|
9月前
|
C++ 存储 索引
面向 C++ 的现代 CMake 教程(一)(5)
面向 C++ 的现代 CMake 教程(一)
136 0
|
9月前
|
C++ 测试技术 开发工具
面向 C++ 的现代 CMake 教程(五)(1)
面向 C++ 的现代 CMake 教程(五)
74 0
|
9月前
|
C++ 存储 测试技术
面向 C++ 的现代 CMake 教程(五)(2)
面向 C++ 的现代 CMake 教程(五)
90 0
|
9月前
|
C++ 缓存 Unix
面向 C++ 的现代 CMake 教程(四)(4)
面向 C++ 的现代 CMake 教程(四)
70 0
|
9月前
|
C++ 存储 测试技术
面向 C++ 的现代 CMake 教程(五)(3)
面向 C++ 的现代 CMake 教程(五)
82 0
|
9月前
|
C++ 容器 Docker
面向 C++ 的现代 CMake 教程(一)(1)
面向 C++ 的现代 CMake 教程(一)
179 0
|
9月前
|
C++ 开发者 缓存
面向 C++ 的现代 CMake 教程(四)(1)
面向 C++ 的现代 CMake 教程(四)
106 0