Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 在CMakeLists.txt中更改一个项目的编译器标志_Visual Studio_Cmake - Fatal编程技术网

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

Visual studio 在CMakeLists.txt中更改一个项目的编译器标志,visual-studio,cmake,Visual Studio,Cmake,我有一个指定多个可执行文件的CMakeLists.txt。对于其中的一个项目,我希望使用静态运行时 我在这里找到了这个解决方案: 这涉及更改CMAKE_CXX_标志和CMAKE_C_标志(以及其他标志) 然而,这样做会改变每个项目的运行库。通过我的测试,无论你在哪里设置这些,它都会改变它 有没有办法只为一个项目做到这一点?如果您为“静态运行时”可执行文件提供自己的CMakeLists.txt文件,并通过将其包含在父项目中,您就可以做到这一点 在子目录CMakeLists.txt中设置的变量不会影

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

我在这里找到了这个解决方案:

这涉及更改CMAKE_CXX_标志和CMAKE_C_标志(以及其他标志)

然而,这样做会改变每个项目的运行库。通过我的测试,无论你在哪里设置这些,它都会改变它


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

如果您为“静态运行时”可执行文件提供自己的CMakeLists.txt文件,并通过将其包含在父项目中,您就可以做到这一点

在子目录CMakeLists.txt中设置的变量不会影响父范围中的类似变量,因此您可以在父
CMakeLists.txt中设置
/MD
/MDd
标志,并在子目录中将其替换为
/MT
/MTd


请注意,尽管该命令名为
add_subdirectory
,但它不需要引用文件系统意义上的实际子目录,只需引用其他具有自己的CMakeLists.txt的目录即可。

很抱歉,没有提前回复,我的计算机在发布此消息后就遇到了大量问题。只是让它启动并运行,所以我很快会测试它。虽然我相信这会奏效,但对我来说似乎有点困难。一个问题:如果我使用一个单独的CMakeLists.txt文件,我可以在父目录中访问该目标吗?我在父目录中包含了目录等。@AdmiralJonB-是的,目标目录将在父目录CMakeList范围中可用。