我想使用' Debug',' Release',' Debug_Unicode'和' Release_Unicode'
我已经能够使用DEBUG_CONFIGURATIONS
变量,以便调试Unicode'配置正确用作调试
这是我在 CmakeLists.txt 文件中尝试做的事情:
target_link_libraries(tests
optimized ${CMAKE_BINARY_DIR}/src/${CMAKE_BUILD_TYPE}/foo.lib
debug ${CMAKE_BINARY_DIR}/src/${CMAKE_BUILD_TYPE}/foo.lib
)
显然,CMake此时可以在调试和发布之间做出选择,因为它必须选择“优化的”#39;或者'调试'图书馆。
但是,CMAKE_BUILD_TYPE
是一个空字符串。
我能够提出的最好的方法是为每个配置使用单独的解决方案文件,
自己传递CMAKE_BUILD_TYPE
:
cmake -G Visual Studio 11 2012 Win64 -DCMAKE_BUILD_TYPE=Debug_Unicode C:\foo
答案 0 :(得分:0)
正如安东尼奥提到的那样
target_link_libraries(tests foo)
或只是
add_dependencies(tests foo)
足以从同一配置链接正确的库。
如果您想要更高级的内容,请查看generator expressions。它们是配置敏感的包括。在Visual Studio的多配置环境中,它们也适用于target_link_libraries()
命令。
所以你的例子看起来像:
target_link_libraries(tests ${CMAKE_BINARY_DIR}/src/$<CONFIG>/foo.lib)
我使用了生成器表达式,例如在需要知道我的DLL的输出路径的自定义命令中(如果foo
将生成MSTest DLL):
add_test(
NAME RunFooTest
WORKING_DIRECTORY $<TARGET_FILE_DIR:foo>
COMMAND vstest.console.exe /InIsolation /Platform:x86 $<TARGET_FILE:$foo>
)
并且 - 仅仅因为您提到了不同的解决方案 - 您可以使用CMake从命令行构建某个配置。在您的情况下,这将是例如。
cmake --build C:\foo --target ALL_BUILD --config Debug_Unicode