cmakelist.txt编译实例

来源:互联网 发布:windows 10激活 编辑:程序博客网 时间:2024/05/22 12:29

cmake_minimum_required ( VERSION 3.0 )set ( PROJ_NAME  $D{PROJ_NAME_LOWER} )project ( ${PROJ_NAME} )# 1) 指定变量set ( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)# 2) 检查平台 & 生成配置头文件# 3) 源列表AUX_SOURCE_DIRECTORY( ../../common   COMMON_LIST  )AUX_SOURCE_DIRECTORY( ../../auxproc  AUXPROC_LIST )SET ( RES_LIST ../../resource/$D{PROJ_NAME_LOWER}res.rc )set ( SOURCE_LIST          ${COMMON_LIST} ${AUXPROC_LIST} ${RES_LIST}     )# 3-1) 子目标 CMakeListmessage("found source files below:")foreach( F ${SOURCE_LIST} )message(${F})endforeach(${F})# 4) 确定目标# 4.1) 指定附加的头文件搜索路径与库文件搜索路径# include_directories ( 相对于 CMakeList 的路径 )# link_directories ( 相对于 CMakeList 的路径 )# add_definitions( -DMacro1 -DMacro2 ) 添加预定义编译宏# add_dependencies( target-name depend-target1 depend-target2 ... ) 添加依赖规则set(CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_MEM_CNTR -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_DBG_OUTPUT -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_ASSERT")set(CMAKE_C_FLAGS_DEBUG    "${CMAKE_C_FLAGS_DEBUG}   -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_MEM_CNTR -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_DBG_OUTPUT -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_ASSERT")set(CMAKE_CXX_FLAGS_RELEASE  "${CMAKE_CXX_FLAGS_RELEASE} -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_MEM_CNTR ")set(CMAKE_C_FLAGS_RELEASE    "${CMAKE_C_FLAGS_RELEASE}   -D$D{PROJ_NAME_UPPER}_CFG_DIAG_USE_MEM_CNTR ")# 4.2) 指定生成的目标需要链接的库add_library( ${PROJ_NAME} SHARED ${SOURCE_LIST} )#target_link_libraries( ${PROJ_NAME} debug opencl )#target_link_libraries( ${PROJ_NAME} optimized opencl )set_target_properties( ${PROJ_NAME} PROPERTIES DEBUG_OUTPUT_NAME   ${PROJ_NAME}d )set_target_properties( ${PROJ_NAME} PROPERTIES RELEASE_OUTPUT_NAME ${PROJ_NAME}  )# 5) 复制生成文件install ( TARGETS ${PROJ_NAME}          ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib          LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib          RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/lib  CONFIGURATIONS Release Debug        )# 将扫描所有 DIRECTORY 下面的子目录,并自动建立相应子目录,将所有符合模式的文件复制进install( FILES       ${PROJECT_SOURCE_DIR}/../../common/$D{PROJ_NAME_LOWER}def.h          ${PROJECT_SOURCE_DIR}/../../common/$D{PROJ_NAME_LOWER}diag.hxx                     ${PROJECT_SOURCE_DIR}/../../common/$D{PROJ_NAME_LOWER}sys.hxx                 DESTINATION ${CMAKE_INSTALL_PREFIX}/include/common )install ( DIRECTORY ${PROJECT_BINARY_DIR}/Debug/  DESTINATION ${CMAKE_INSTALL_PREFIX}/lib  FILES_MATCHING PATTERN "$D{PROJ_NAME_LOWER}d.pdb"   )install ( DIRECTORY ${PROJECT_BINARY_DIR}/Release/  DESTINATION ${CMAKE_INSTALL_PREFIX}/lib  FILES_MATCHING PATTERN "$D{PROJ_NAME_LOWER}.pdb"   )

0 0