如何通过CMake仅将项目生成的可执行文件输出到指定/bin目录?
解决CMake仅自定义可执行文件输出目录的问题
你之前用的CMAKE_RUNTIME_OUTPUT_DIRECTORY和EXECUTABLE_OUTPUT_PATH都是全局变量,会作用于项目中所有生成的目标——包括你引入的第三方库或子模块库,所以这些库的二进制文件也会被放到/bin目录下。要只让自己项目的可执行文件输出到指定目录,得针对单个目标单独配置:
先移除全局的输出目录设置,删除这两行:
SET( EXECUTABLE_OUTPUT_PATH ${dir}/bin ) set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin )针对你自己项目的每个可执行目标,用
set_target_properties单独指定输出目录:
假设你的可执行目标名为my_app,代码示例如下:# 先定义你的可执行目标 add_executable(my_app src/main.cpp) # 为该目标单独设置输出目录 set_target_properties(my_app PROPERTIES # 单配置生成器(如Makefile)的基础输出目录 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin" # 多配置生成器(如Visual Studio)可分别指定不同配置的目录 RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug" RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/bin/Release" )
如果你的项目有多个自定义可执行目标,重复上述set_target_properties步骤即可。这样配置后,只有你自己定义的可执行文件会输出到/bin目录,依赖库的二进制文件会保留在它们默认的输出位置。
内容的提问来源于stack exchange,提问作者Turgut
相关产品推荐
相关产品推荐

