CMAKE学习笔记

CMAKE学习笔记

一、将build产生的exe文件和lib文件放到指定的目录中

方法1:

CMAKE中有两个变量用于指定输出文件的位置,通过设定这两个变量EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH的值指定exe文件和lib文件放置的目录,如

set(EXECUTABLE_OUTPUT_PATH <your_specified_path>)

set(LIBRARY_OUTPUT_PATH <your_specified_path>)

对于支持多个build配置(如Release,Debug等)的情况,CMAKE会为每一个配置生成一个子目录。根据当前使用的build配置,exe或lib文件实际上会被放置在<your_specified_path>/Debug或<your_specified_path>/Release中。


方法2:

通过设置target的属性ARCHIVE_OUTPUT_DIRECTORY,LIBRARY_OUTPUT_DIRECTORY和RUNTIME_OUTPUT_DIRECTORY为指定输出目录。对于多配置的generator,cmake会附加每个配置的子目录到指定输出目录。如果不希望将不同配置下生成的target放置到各自配置的子目录中,可以同时设置target的属性ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>,LIBRARY_OUTPUT_DIRECTORY_<CONFIG>和RUNTIME_OUTPUT_DIRECTORY_<CONFIG>。上述属性分别作用于三种不同类型target的输出:可执行文件总是被作为RUMTIME target,静态库总是被作为ARCHIVE target,Module库总是被作为LIBRARY target,在Windows平台,shared library的DLL部分作为RUNTIME target,对应的Import library作为ARCHIVE target。如要输出所有配置的可执行target到${CMAKE_BINARY_DIR}/bin目录中,

    set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
    set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
    set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)

将产生的target放置在编译树的bin文件夹中。


方法3:

设置CMAKE_LIBRARY_OUTPUT_DIRECTORY、CMAKE_ARCHIVE_OUTPUT_DIRECTORY、CMAKE_RUNTIME_OUTPUT_DIRECTORY为指定目录,相应类型的target将输出到指定路径。CMAKE使用上述变量的值初始化对应的(方法二中)目标属性。对于多配置的generator,target将会输出到指定目录下配置子目录中。若不希望输出到配置子目录中,则需要设定相应配置的值,如CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>。


参考资料:

http://cmake.3232098.n2.nabble.com/CMAKE-RUNTIME-OUTPUT-DIRECTORY-without-the-extra-Debug-or-Release-td4532075.html

cmake帮助文档


二、在target输出文件名后添加后缀

设置CMAKE_<CONFIG>_POSTFIX变量,CMAKE会在target输出文件名后添加后缀。如,通常将生成的库文件的Debug版添加后缀d,libAd.dll,Release版的输出文件为libA.dll。

set(CMAKE_DEBUG_POSTFIX "d")


三、为Debug和Release build链接不同的库

根据CMAKE的语法

target_link_libraries(<target> [lib1 [lib2 [...]]]
                        [[debug|optimized|general] <lib>] ...)

其中debug,optimized和general指出紧接其后的库只用于对应的build类型。



  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值