cmake:基本结构

本文介绍了CMake的基本结构和使用,包括设置项目、添加子目录、编译配置、库的创建以及自定义构建命令。特别提到了在CMake中使用`add_custom_command`进行预构建操作,如创建目录和复制文件,并且在VSCode中使用cmake插件时遇到的问题。还展示了makefile如何调用cmake命令确保每次构建时都执行相关命令。
摘要由CSDN通过智能技术生成

CMake

基本结构

cmake_minimum_required(VERSION 3.0)
project(ttest)

# 单元测试
# add_subdirectory(test)

# add_subdirectory(subsrc)

# 目标编译配置
include_directories(    
)

aux_source_directory(. SRCS)

add_executable(${PROJECT_NAME}
${SRCS}
)

# 动态库
# add_library(${PROJECT_NAME} SHARED
# ${SRCS}
# )

# 静态库
# add_library(${PROJECT_NAME}
# ${SRCS}
# )

target_link_libraries(${PROJECT_NAME}
)

set(INSTALL_HEAD_FILES
# 此处设置需要安装的头文件
${CMAKE_CURRENT_SOURCE_DIR}/tmp.txt
)

add_custom_command(TARGET  ${PROJECT_NAME} PRE_BUILD
    COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR}/etc/${PROJECT_NAME} 
    COMMAND cp ${INSTALL_HEAD_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/etc/${PROJECT_NAME} 
    WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}
 )

# IF(CMAKE_BUILD_TYPE MATCHES RELEASE)
#     add_custom_command(TARGET  ${PROJECT_NAME} POST_BUILD
#         COMMAND sudo setcap "CAP_IPC_LOCK,CAP_SYS_NICE=+eip" ${CMAKE_CURRENT_SOURCE_DIR}/build/ttest
#         WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}
#     )
# ENDIF()

注意:在custom_command 中执行sudo时,对于vscode使用cmake插件会报错。但在shell中make时会提示输入密码

makefile中调用cmake

# FORCE依赖设置可使得每次make时都运行cmake相关命令
./build/ttest:FORCE
	cd build && cmake .. && make -j12

.PHONY: FORCE
FORCE:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值