我有一个指定多个可执行文件的CMakeLists.txt。对于其中一个项目,我想要使用静态运行时。
我在这里找到了这个解决方案:Setting the MSVC runtime in CMake
这涉及更改CMAKE_CXX_FLAGS和CMAKE_C_FLAGS(以及其他人)。
但是,执行此类操作会更改每个项目的运行时库。通过我的测试,无论你在哪里设置它们,它都会改变它。
有没有办法只为一个项目做这个?
答案 0 :(得分:2)
如果您将“静态运行时”可执行文件设置为自己的CMakeLists.txt文件并通过add_subdirectory
将其包含在父文件中,则可以执行此操作。
子目录CMakeLists.txt中设置的变量不会影响父作用域中的类似变量,因此您可以在父/MD
中使用/MDd
或CMAKE_<LANG>_FLAGS_<BUILD>
标记,并替换这些在子目录中包含/MT
或/MTd
。
请注意,即使命令被称为add_subdirectory
,它也不需要引用文件系统意义上的实际子目录 - 只需要一些具有自己的CMakeLists.txt的其他目录。