我需要根据环境变量或其他输入参数有条件地编译C ++源文件。VS2019中有一种机制可以做到这一点吗?
该解决方案适用于VS2017,但我不知道为什么它也不适用于VS2019。
您可以“导入”环境变量作为预处理器定义。在Visual Studio项目的属性中,转到“配置属性”->“ C / C ++”->“预处理器”。单击“预处理器定义”字段,单击最右边的向下箭头,然后选择“编辑”。
在这里,您可以添加包含环境变量的预处理器定义。每行用一个符号表示一个定义,该符号[name]=[value]
定义一个预处理器定义,该定义[name]
将被替换[value]
。环境变量应包装在一个$()
待解决的变量中。因此,例如,要导入环境变量MY_ENV_VAR
,可以添加definition MY_ENV_VAR=$(MY_ENV_VAR)
。如果MY_ENV_VAR
在编译时说5,则此定义等同于#define MY_ENV_VAR 5
整个项目中都可用。
然后,在源文件中,可以用#if
/换行包装代码#endif
以有条件地编译该代码。使用相同的示例,仅MY_ENV_VAR
在正好为1的情况下仅编译源文件,您应编写:
#if MY_ENV_VAR == 1
// Entire source file
#endif // #if MY_ENV_VAR == 1
请注意,启动Visual Studio时会加载环境变量。如果希望对环境变量的最新更改可见,则可能需要重新启动Visual Studio。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句