在CMakeLists.txt中更改一个项目的编译器标志

时间:2013-03-17 21:29:23

标签: visual-studio cmake

我有一个指定多个可执行文件的CMakeLists.txt。对于其中一个项目,我想要使用静态运行时。

我在这里找到了这个解决方案:Setting the MSVC runtime in CMake

这涉及更改CMAKE_CXX_FLAGS和CMAKE_C_FLAGS(以及其他人)。

但是,执行此类操作会更改每个项目的运行时库。通过我的测试,无论你在哪里设置它们,它都会改变它。

有没有办法只为一个项目做这个?

1 个答案:

答案 0 :(得分:2)

如果您将“静态运行时”可执行文件设置为自己的CMakeLists.txt文件并通过add_subdirectory将其包含在父文件中,则可以执行此操作。

子目录CMakeLists.txt中设置的变量不会影响父作用域中的类似变量,因此您可以在父/MD中使用/MDdCMAKE_<LANG>_FLAGS_<BUILD>标记,并替换这些在子目录中包含/MT/MTd

请注意,即使命令被称为add_subdirectory,它也不需要引用文件系统意义上的实际子目录 - 只需要一些具有自己的CMakeLists.txt的其他目录。