cmake RUNTIME_OUTPUT_DIRECTORY on Windows
-
23-08-2019 - |
解决方案
我一直使用 Ogapo 多年报道的精细前缀属性的黑客。它的工作原理。
但随着CMake的2.8版本,对于避免在Windows发布/调试子目录官方支持。
使用任一全局CMAKE_<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>
变量,或按目标<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>
性质,如下所示:
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()
这已经为我工作
我发现了一些良好讨论这个话题:
http://www.cmake.org/pipermail/cmake/2008-April/021355.html
http://www.vtk.org/Bug/bug_view_advanced_page.php?bug_id=8366
是否可以利用废弃的 EXECUTABLE_OUTPUT_PATH 而不是的 RUNTIME_OUTPUT_DIRECTORY?我不知道什么是功能性改变了之间的2,但它也许值得尝试。
一些cmake的变量具有建立特定的版本。
CMAKE_C_FLAGS
the compiler flags for compiling C sources. Note you can also specify switches with ADD_DEFINITIONS().
CMAKE_C_FLAGS_DEBUG
compiler flags for compiling a debug build from C sources.
CMAKE_C_FLAGS_RELEASE
compiler flags for compiling a release build from C sources.
CMAKE_C_FLAGS_RELWITHDEBINFO
compiler flags for compiling a release build with debug flags from C sources.
我还没有验证这些瓦尔存在,但RUNTIME_OUTPUT_DIRECTORY_DEBUG
&& RUNTIME_OUTPUT_DIRECTORY_RELEASE
可能设置为同样的事情可能会奏效。
到目前为止,最好的答案,我发现是简单地写 CMake的安装命令一>,我的每个目标和数据文件,并成立了MSVC调试运行了安装目录。这具有使用CPack用于创建安装的附加益处。
有关我全局:
set(CMAKE_STATIC_LIBRARY_PREFIX "../lib")
set(CMAKE_SHARED_LIBRARY_PREFIX "../lib")
所做的工作,所以我没有将其设置为每个库(CMake的2.8.4)
您需要更改您的Visual Studio项目的建设位置。转到项目属性和编译选项卡上指定的“构建输出路径”是你想去的地方。
<强> 注意 强>
不知道怎么的相关,这是因为我不知道你的CMake
您可以使用下面的令牌在Visual Studio中生成事件:
$(TargetPath)
这将是路径,该项目是建立在位置,所以这取决于你的项目设置,这要么是在调试或发布文件夹。