Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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
将类似Makefile的条件逻辑添加到VisualStudio';s构建系统 我在VisualStudio 2008中有一个C++项目,它的编译依赖于许多配置设置。例如,我使用_MYLIB和EXPERIMENTAL提供了可选的预处理器定义,用于修改代码_C++_Visual Studio_Build - Fatal编程技术网

将类似Makefile的条件逻辑添加到VisualStudio';s构建系统 我在VisualStudio 2008中有一个C++项目,它的编译依赖于许多配置设置。例如,我使用_MYLIB和EXPERIMENTAL提供了可选的预处理器定义,用于修改代码

将类似Makefile的条件逻辑添加到VisualStudio';s构建系统 我在VisualStudio 2008中有一个C++项目,它的编译依赖于许多配置设置。例如,我使用_MYLIB和EXPERIMENTAL提供了可选的预处理器定义,用于修改代码,c++,visual-studio,build,C++,Visual Studio,Build,拥有MyLib的用户将希望使用在预处理器定义列表中具有WITHMylib的项目配置进行编译,并将库添加到include/link设置中。想要启用实验特性的用户将希望将实验特性添加到预处理器定义中。但是除了这些更改之外,其余的项目配置应该基本相同 我试图避免创建一个“指数”数量的项目配置来处理所有的可能性,也就是说,我不希望 调试 用mylib调试 用MyLib_调试_ 调试实验 …还有4个要发布 因为这里有大量的冗余 使用Makefiles这将非常容易,因为makefile将根据需要使用“i

拥有MyLib的用户将希望使用在预处理器定义列表中具有WITHMylib的项目配置进行编译,并将库添加到include/link设置中。想要启用实验特性的用户将希望将实验特性添加到预处理器定义中。但是除了这些更改之外,其余的项目配置应该基本相同

我试图避免创建一个“指数”数量的项目配置来处理所有的可能性,也就是说,我不希望

  • 调试
  • 用mylib调试
  • 用MyLib_调试_
  • 调试实验
  • …还有4个要发布
因为这里有大量的冗余

使用Makefiles这将非常容易,因为makefile将根据需要使用“if”语句来扩充编译器标志,使其余的配置保持相同

我知道诸如CMake、SCons等构建系统。我意识到它们可能会解决我的问题

我的问题只是,是否有任何合理的方法可以通过VisualStudio的构建系统实现这一点。如果这与VisualStudio中出现的“从父项或项目默认值继承”选项有关,也许有人可以向我解释如何设置/更改此父项及其默认值

谢谢。

有一个名为“属性表”的功能,它可以准确地解决您需要的问题。只需将新的属性页添加到项目中,然后将其添加到项目中即可。在属性表中完成的设置将在每个项目中继承。因此,您可以简单地在一个地方定义所需的文字,并影响整个项目

查看VisualStudio“视图”菜单中的“属性管理器”


MSDN link

另一个有用的功能:属性表可以相互继承,因此,如果要打开和关闭的设置比单个预处理器宏更复杂,可以根据需要将它们分组到单独的属性表中,该属性表由全局属性表继承或不继承。