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:
本文介绍了CMake的基本结构和使用,包括设置项目、添加子目录、编译配置、库的创建以及自定义构建命令。特别提到了在CMake中使用`add_custom_command`进行预构建操作,如创建目录和复制文件,并且在VSCode中使用cmake插件时遇到的问题。还展示了makefile如何调用cmake命令确保每次构建时都执行相关命令。
688

被折叠的 条评论
为什么被折叠?



