设置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_library
、add_executeable
不设置源文件,通过自定义src变量进行收集再进行设置。
- a/CMakeLists.txt
list(APPEND src others.cpp) # 追加源文件 复制代码