【发布时间】:2017-01-09 23:33:21
【问题描述】:
我在 Visual Studio 2013、CMake 3.5.1、Windows 10 上。我正在尝试通过 CMake 复制一些文件,如下所示:
file(COPY ${IMAGES} DESTINATION ${CMAKE_BINARY_DIR}/bin/Release)
是否可以将“Release”替换为代表配置的变量,例如:
file(COPY ${IMAGES} DESTINATION ${CMAKE_BINARY_DIR}/bin/${Variable})
我尝试过
file(COPY ${IMAGES} DESTINATION ${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE})
但CMAKE_BUILD_TYPE是一个空字符串,当我使用消息打印出来时,我也尝试过
file(COPY ${IMAGES} DESTINATION ${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>)
但由于某种原因,文件命令无法破译$<CONFIGURATION>,而类似命令
add_custom_target(run COMMAND ${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Test.exe)
可以。在 CMake 中提取 Visual Studio 当前是在 Release 还是 Debug 中构建的正确方法是什么?
【问题讨论】:
-
我还是不明白:我通过调用
cmake -G "Visual Studio 15 2017 Win64" ..制作了一个VS 解决方案,现在我有一个带有CMAKE_CONFIGURATION_TYPES=Debug;Release;MinSizeRel;RelWithDebInfo的*.sln 项目(我猜这很标准)。我可以使用配置管理器(或下拉菜单)更改配置。如何在CMakeLists.txt中检索当前选择的配置? -
@Netherwire 您不知道在 CMake 配置期间选择了什么,这意味着在生成 sln 文件之前。
add_custom_target有效,因为自定义目标是在手动或编程生成 sln 文件后调用的。
标签: c++ visual-studio visual-studio-2010 visual-studio-2012 cmake