CMake整理

本文详细介绍了CMake中的关键变量如目录结构、如何设置源文件和头文件、编译库和可执行程序的路径,以及针对不同平台的编译选项和调试策略。特别关注了多级目录项目管理和跨平台编译配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值