当前位置:  开发笔记 > 运维 > 正文

在Windows上使用cmake RUNTIME_OUTPUT_DIRECTORY

如何解决《在Windows上使用cmakeRUNTIME_OUTPUT_DIRECTORY》经验,为你挑选了2个好方法。

我正在使用cmake来管理我的跨平台构建,除了这个问题,我已经解决了所有问题.我设置RUNTIME_OUTPUT_DIRECTORY了一个bin/存储数据文件的目录.在Linux上,这很好用.在Windows上,可执行文件放在Debug/ Release子目录中,具体取决于构建类型.有没有办法让cmake将可执行文件复制到正确的目录,或者(甚至更好)完全停止使用这些子目录?



1> Christopher ..:

我一直在使用Ogapo报道的精美前缀属性hack 多年.有用.

但是从CMake版本2.8开始,官方支持避免Windows上的Release/Debug子目录.

使用全局CMAKE__OUTPUT_DIRECTORY_变量或每目标_OUTPUT_DIRECTORY_属性,如下所示:

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}")



2> 小智..:

我不确定这些目录是故意的还是错误的,但是冒着前向不兼容的风险,您可以添加:

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()

这一直在为我工作


这对我也很好.对于.lib文件,使用SET_TARGET_PROPERTIES($ {PROJECT_NAME} PROPERTIES IMPORT_PREFIX"../")
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有