CMake自定义构建目录配置:如何指定exe输出路径?
如何通过CMakeLists.txt设置自定义的可执行文件构建目录
当然可以通过CMakeLists.txt完全解决这个问题,核心是利用CMake提供的输出目录控制变量,以下是具体实现方式:
全局配置(所有可执行文件生效)
在你的CMakeLists.txt的project()指令之后添加以下配置:
# 设置全局可执行文件的基础输出目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # 针对Release/Debug等不同配置单独指定目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/Release) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin/Debug)
${CMAKE_BINARY_DIR}是CMake自动识别的构建根目录(即你执行cmake命令的目录)- 配置后,Release模式下编译出的exe会自动生成到
bin/Release目录下,Debug模式则对应bin/Debug
单个目标配置(仅指定可执行文件生效)
如果你只想让某个特定的可执行文件输出到自定义路径,可在add_executable()指令之后添加:
add_executable(my_exe main.cpp) # 为该目标设置输出目录 set_target_properties(my_exe PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/Release RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin/Debug )
验证效果
配置完成后,你依然可以使用原来的构建命令:
cmake --build . --config Release
执行后就能在bin/Release目录下找到my_exe.exe(Windows平台)或my_exe(Linux/macOS平台)。
注意事项
- 如果你使用的是单配置生成器(比如Makefile),需要先通过
CMAKE_BUILD_TYPE指定构建类型,再设置对应目录:set(CMAKE_BUILD_TYPE Release) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/Release) - 确保CMake版本在2.8.12及以上,这些变量在该版本后得到了稳定支持。
内容的提问来源于stack exchange,提问作者HighQuality
相关产品推荐
相关产品推荐

