我正在使用cmake来管理我的跨平台构建,除了这个问题,我已经解决了所有问题.我设置RUNTIME_OUTPUT_DIRECTORY
了一个bin/
存储数据文件的目录.在Linux上,这很好用.在Windows上,可执行文件放在Debug
/ Release
子目录中,具体取决于构建类型.有没有办法让cmake将可执行文件复制到正确的目录,或者(甚至更好)完全停止使用这些子目录?
我一直在使用Ogapo报道的精美前缀属性hack 多年.有用.
但是从CMake版本2.8开始,官方支持避免Windows上的Release/Debug子目录.
使用全局CMAKE_
变量或每目标
属性,如下所示:
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}") SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}") SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}") SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}") SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}") SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
我不确定这些目录是故意的还是错误的,但是冒着前向不兼容的风险,您可以添加:
if (MSVC_IDE) # hack to get around the "Debug" and "Release" directories cmake tries to add on Windows set_target_properties (${NAME} PROPERTIES PREFIX "../") endif()
这一直在为我工作