我有一个项目,为此我创建了库的静态和动态版本。这些工具与静态版本链接,因此在最终系统上运行它们不需要特殊的 DLL。
我可以使用根 CMakeLists.txt 中的一个简单设置来设置所有内容以使用 /MD
或(以及相应的调试)进行编译。/MT
例如,要强制 /MT 我可以使用以下命令:
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" )
set ( CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" )
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE} /MTd" )
set ( CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE} /MTd" )
但是,这意味着编译动态库/MT
是错误的。是否可以在每个项目的基础上做同样的事情?毕竟,一旦创建了解决方案,我就可以编辑每个项目并将对象/MD
和/MT
对象修复为我需要的对象。cmake 可以做到吗?这会很方便。
我看了看,set_target_properties()
但这似乎没有考虑CMAKE_C_FLAGS_<type>
变量,如果我只是设置一组标准的标志,它不会特定于 Debug 或 Release。
以下确实设置了属性,但我似乎没有选择调试和发布选项。
set_target_properties( ${PROJECT_NAME} PROPERTIES
COMPILE_FLAGS "/MT"
)
有什么解决办法吗?