Visual studio 编译所有不同的C++;使用CMake为每个可能的配置运行时
我正在尝试使用CMake为Visual Studio 2013生成解决方案, 我希望允许最终用户使用所有可能的运行时编译DLL(由于接口中的STL以及ABI不一样的事实…) 我想生成一个包含4种配置的解决方案:Visual studio 编译所有不同的C++;使用CMake为每个可能的配置运行时,visual-studio,cmake,Visual Studio,Cmake,我正在尝试使用CMake为Visual Studio 2013生成解决方案, 我希望允许最终用户使用所有可能的运行时编译DLL(由于接口中的STL以及ABI不一样的事实…) 我想生成一个包含4种配置的解决方案: DebugMD-应编译为/MDd DebugMT-应编译为/MTd ReleaseMD-应编译为/MD ReleaseMT-应编译为/MT 我曾尝试使用生成器表达式,但无法使其为所有配置正确生成,它似乎会相互覆盖 例如,我尝试了以下方法: cmake_minimum_required(V
DebugMD-应编译为/MDd
DebugMT-应编译为/MTd
ReleaseMD-应编译为/MD
ReleaseMT-应编译为/MT 我曾尝试使用生成器表达式,但无法使其为所有配置正确生成,它似乎会相互覆盖 例如,我尝试了以下方法:
cmake_minimum_required(VERSION 3.15)
cmake_policy(SET CMP0091 NEW)
# set the project name
project(test)
# add the executable
add_executable(test test1.cpp)
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:ReleaseMT>:MultiThreaded>")
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:DebugMT>:MultiThreadedDebug>")
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:DebugMD>:MultiThreadedDLLDebug>")
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY "$<$<CONFIG:ReleaseMD>:MultiThreadedDLL>")
cmake_最低要求(3.15版)
cmake_策略(设置CMP0091新)
#设置项目名称
项目(测试)
#添加可执行文件
添加可执行文件(test test1.cpp)
set_属性(目标测试属性MSVC_运行时_库“$”)
set_属性(目标测试属性MSVC_运行时_库“$”)
set_属性(目标测试属性MSVC_运行时_库“$”)
set_属性(目标测试属性MSVC_运行时_库“$”)
(将CMAKE_配置_类型修改为“DebugMD;releasemad;DebugMT;ReleaseMT;MinSizeRel;RelWithDebInfo”后)
有人有什么建议来实现这种行为吗?你有没有尝试过类似的方法
set_property(TARGET test PROPERTY MSVC_RUNTIME_LIBRARY
"$<$<CONFIG:ReleaseMT>:MultiThreaded>"
"$<$<CONFIG:DebugMT>:MultiThreadedDebug>"
"$<$<CONFIG:DebugMD>:MultiThreadedDLLDebug>"
"$<$<CONFIG:ReleaseMD>:MultiThreadedDLL>"
)
set_属性(目标测试属性MSVC_运行库
"$"
"$"
"$"
"$"
)
i、 e.在一次调用中合并所有配置,因为
set\u property()
不会追加但会覆盖以前的值…谢谢,将所有配置追加到单个set\u属性行中工作:D