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: