多级目录cmake通用模板

该博客介绍了如何使用CMake构建一个多层目录结构的项目,包括在不同子目录中组织源文件,链接第三方库,以及在构建过程中执行自定义命令。通过CMakeLists.txt文件的配置,可以实现项目的模块化管理和编译选项的设置。

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

 目录结构

├── CMakeLists.txt
├── build
├── custom
│   ├── CMakeLists.txt
│   ├── add.c
│   └── add.h
├── log
│   ├── CMakeLists.txt
│   ├── log.c
│   └── log.h
└── main.c

 顶层CMakeLists.txt

cmake_minimum_required (VERSION 3.1)					                # cmake版本最低要求
message("cur dir = ${CMAKE_CURRENT_LIST_DIR}")                          # 打印当前路径

include_directories(${CMAKE_CURRENT_LIST_DIR})                          # 增加头文件搜索路径
aux_source_directory(${CMAKE_CURRENT_LIST_DIR} PROJ_SRC_LIST)           # 增加源文件
#list(APPEND PROJ_SRC_LIST ${CMAKE_CURRENT_LIST_DIR}/reset_user_init.S) # 增加.S源文件

include(${CMAKE_CURRENT_LIST_DIR}/log/CMakeLists.txt)                   # 包含指定文件夹中的CMakeLists.txt文件
include(${CMAKE_CURRENT_LIST_DIR}/custom/CMakeLists.txt)

project(example_test1)
add_executable(example_test1 ${PROJ_SRC_LIST})

${CMAKE_CURRENT_LIST_DIR}:获取当前CMakeLists.txt文件所在绝对路径

custom和log目录中的CMakeLists.txt

cmake_minimum_required (VERSION 3.1)					        # cmake版本最低要求
message("cur dir = ${CMAKE_CURRENT_LIST_DIR}")

include_directories(${CMAKE_CURRENT_LIST_DIR})
aux_source_directory(${CMAKE_CURRENT_LIST_DIR} PROJ_SRC_LIST)

若项目中需要增加第三方库:

子目录中增加:

list(APPEND CUR_PROJ_LIB ${CMAKE_CURRENT_LIST_DIR}/libxxx.a)

项目顶层目录中增加:

target_link_libraries(example_test1 ${CUR_PROJ_LIB})

另外一种方式,在add_executable之前添加

LINK_LIBRARIES(libm.a)

 

若项目中需要调用bat文件

add_custom_command(TARGET example_test1
                    POST_BUILD
                    COMMAND cmd /c xxx.bat
                   )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值