在 devenv 命令行中是否有一种方法可以添加额外的预处理器 #define ?
在 devenv 命令行中是否有一种方法可以添加额外的预处理器 #define ?
我不完全确定您所说的vcbuild命令行是什么意思,但如果您指的是Visual C++命令行编译器,则可以通过添加 /Dxxxx 添加定义,例如:
cl.exe /DSHAREWARE ....
根据评论提供额外答案:
你应该能够通过设置CL环境变量来使用额外的预处理器定义:
SET CL=/DSHAREWARE
devenv ....
更多信息可以在MSDN找到。
在您的项目设置中,添加以下预处理器定义:
$(MyPreprocessorDefinitions);
然后在您的*.bat文件中使用:
REM #define MY_DEF
set MyPreprocessorDefinitions=MY_DEF
devenv.exe ...
REM #undefine MY_DEF
set MyPreprocessorDefinitions=
我找不到一种方法来避免修改解决方案或项目文件,所以我想出了以下方法:
feature_flag.h
#if FEATURE_FLAG
替换为#if !__has_include("feature_flag.h")
feature_flag.h
它没有使用#define,但它确实使用了预处理器,这正是我需要的。
SED_REPLACE_THIS
,然后使用sed将其设置为有意义的值(即:DONT_CRASH_AS_MUCH
)
sed -i 's/SED_REPLACE_THIS/DONT_CRASH_AS_MUCH/g' project.csproj