我有一个 CMakeLists.txt 指定多个可执行文件。只有其中一个项目,我想使用静态运行时。
我在这里找到了这个解决方案:在 CMake 中设置 MSVC 运行时
这涉及更改 CMAKE_CXX_FLAGS 和 CMAKE_C_FLAGS(以及其他)。
但是,这样做会更改每个项目的运行时库。通过我的测试,无论你在哪里设置这些,它都会改变一切。
有没有办法只为一个项目做到这一点?
我有一个 CMakeLists.txt 指定多个可执行文件。只有其中一个项目,我想使用静态运行时。
我在这里找到了这个解决方案:在 CMake 中设置 MSVC 运行时
这涉及更改 CMAKE_CXX_FLAGS 和 CMAKE_C_FLAGS(以及其他)。
但是,这样做会更改每个项目的运行时库。通过我的测试,无论你在哪里设置这些,它都会改变一切。
有没有办法只为一个项目做到这一点?
如果您为“静态运行时”可执行文件提供自己的 CMakeLists.txt 文件并通过add_subdirectory
.
在子目录 CMakeLists.txt 中设置的变量不会影响父范围内的类似变量,因此您可以在 parent 中有/MD
or/MDd
标志,并在子目录CMAKE_<LANG>_FLAGS_<BUILD>
中用/MT
or替换它们。/MTd
请注意,即使调用了该命令add_subdirectory
,它也不需要引用文件系统意义上的实际子目录 - 只是具有自己的 CMakeLists.txt 的某个其他目录。