我想将包含文件的名称作为编译器参数传递,以便我可以修改大量配置参数。但是,我的 C++ 构建是通过一个类似于 makefile 的过程,该过程从传递给编译器和预处理器的参数中删除引号。我希望做一些相当于
#ifndef FILE_ARG
// defaults
#else
#include "FILE_ARG"
#endif
使用我的命令行,包括 -DFILE_ARG=foo.h。这当然不起作用,因为预处理器不翻译 FILE_ARG。
我试过了
#define QUOTE(x) #x
#include QUOTE(FILE_ARG)
出于同样的原因,这不起作用。
出于脚本原因,我宁愿在命令行上执行此操作,也不愿在适当的例程中编辑包含行。有什么办法吗?