1、变量
CMAKE_CURRENT_BINARY_DIR |
指向当前处理的 CMakeLists.txt 文件对应的构建目录。对于多级目录结构的项目,每个目录的这个变量指向的都是它自己的构建目录 |
CMAKE_SOURCE_DIR |
指向最顶层 CMakeLists.txt 文件的源码目录,即整个项目的根源码目录。在所有的 CMakeLists.txt 文件中保持不变,无论它们在源码树的何处。 |
PROJECT_SOURCE_DIR |
指向最近通过 project() 命令定义的项目的根源码目录。如果是单个项目,则与 CMAKE_SOURCE_DIR 相同。在使用 add_subdirectory 命令嵌套项目时,对于每个子项目来说,它指向的是各自的根源码目录 |
2、设置源文件和头文件
源文件
aux_source_directory(. SRC_LIST) #这里 . 表示当前目录,SRC_LIST 是存放源文件列表的变量
file(GLOB SRC_LIST "src/*.cpp") # 这里file(GLOB ...)命令来查找src目录下所有扩展名为.cpp的文件,并将它们的名字存入SRC_LIST变量
add_subdirectory(src) #进入子目录
头文件
include_directories(
${TOP_DIR}/Include
${TOP_DIR}/Src
)
3、编译库和进程
SET(EXECUTABLE_OUTPUT_PATH ${TOP_DIR}/Bin/$${PLATFORM}) ###设置可执行程序生成路径
SET(LIBRARY_OUTPUT_PATH ${TOP_DIR}/Lib/$${PLATFORM}) #####设置库生成路径
#########设置库属性 源文件和输出名字
set(STATIC_LIB ${PROJECT_NAME}_static)
add_library(${STATIC_LIB} STATIC ${LIB_SRC})
set_target_properties(${STATIC_LIB} PROPERTIES OUTPUT_NAME ${LIB_NAME})
4、编译选项相关
set(CMAKE_SYSTEM_NAME LINUX)
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_C_FLAGS "xxx")
set(CMAKE_CXX_FLAGS "xxx")
add_compile_options(-std=c++11 -g) ##增加编译选项
add_definitions(-DXXX