我在使用 为管理我的跨平台的建立,和我们一切工作除了为这个问题。我设置的 RUNTIME_OUTPUT_DIRECTORY 来一个 bin/ 目录我有数据文件存储。在Linux上,这一工作正常。在窗户、可执行文件获取放置在 Debug/Release 子目录,根据建立类型。是否有任何方式得到 复制的可执行适当的目录,或(甚至更好的)停止使用这些子目录完全?

有帮助吗?

解决方案

我一直使用 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可能设置为同样的事情可能会奏效。

有关我全局:

set(CMAKE_STATIC_LIBRARY_PREFIX "../lib")
set(CMAKE_SHARED_LIBRARY_PREFIX "../lib")

所做的工作,所以我没有将其设置为每个库(CMake的2.8.4)

您需要更改您的Visual Studio项目的建设位置。转到项目属性和编译选项卡上指定的“构建输出路径”是你想去的地方。

<强> 注意

不知道怎么的相关,这是因为我不知道你的CMake

您可以使用下面的令牌在Visual Studio中生成事件:

$(TargetPath)

这将是路径,该项目是建立在位置,所以这取决于你的项目设置,这要么是在调试或发布文件夹。

scroll top