CMake轻松实现把编译生成文件分类输出到指定路径,同时又拷贝一份到别的指定路径(Window/Linux通用)

使用CMake管理的C++项目工程你是否有以下需求:
1.项目编译时将生成的文件分类自动输出到指定位置;
2.除了上面输出到指定位置以外,还要拷贝一份到指定位置(包含头文件,配置文件,第三方依赖库文件等);

第2点有两种实现方式,就是在CMakeLists.txt里使用 install() 或者 add_custom_target() 语句编写拷贝的文件及目标路径,它们都可以实现,但是 install() 更适合项目编译生成的动静态库/可执行文件/配置文件/头文件,而 add_custom_target() 适合拷贝一些项目的第三方依赖文件。我个人喜欢用 install() 更方便,下面列子我都使用给你参考。

示例:CMakeLists.txt中节选出来的相关内容

# 设置生成文件输出位置的根目录变量
set(OUT_EXE_PATH ${CMAKE_BINARY_DIR}/bin)  
set(OUT_LIB_PATH ${CMAKE_BINARY_DIR}/lib) 

# 设置生成目标的属性(编译生成文件的命名后缀、输出位置等的设置)
set_target_properties(${PROJECT_NAME} PROPERTIES

    LINKER_LANGUAGE CXX # 连接器使用C++的连接规则

    DEBUG_POSTFIX  "d" # Debug版本的生成文件名以d结尾
    RELEASE_POSTFIX  "" # Release版本无后缀

    # Windows:(.exe/.dll)文件输出 or Linux:可执行文件输出
    RUNTIME_OUTPUT_DIRECTORY ${OUT_EXE_PATH}/other
    RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OUT_EXE_PATH}/debug
    RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OUT_EXE_PATH}/release

    # Linux:(.so)文件输出
    LIBRARY_OUTPUT_DIRECTORY ${OUT_LIB_PATH}/other
    LIBRARY_OUTPUT_DIRECTORY_DEBUG ${OUT_LIB_PATH}/debug
    LIBRARY_OUTPUT_DIRECTORY_RELEASE ${OUT_LIB_PATH}/release

    # Windows:(.lib/.a)文件输出
    ARCHIVE_OU
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值