cmakelist.txt编译实例

本文介绍了一个使用CMake进行项目构建的具体配置实例,包括设置最小版本要求、项目名称、源文件收集、编译宏定义、库文件生成及安装路径配置等关键步骤。

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) 子目标 CMakeList
message("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" 
	  )



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vqt5_qt6

你的鼓励是我们创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值