我想包含基于makefile变量的头文件。
MakeFile
DISC := left
将此变量传递给C程序,如下所示:
CFLAGS += -DNAME=\"$(DISC)\"
在main.c中,需要包含基于makefile变量的正确光盘的标头。
有可能做
#include "NAME_header.h"
(其中名称是从makefile传递的)
我遇到编译错误 错误:找不到NAME_header.h。
真的可以通过这种方式包含头文件吗?
答案 0 :(得分:2)
可行的解决方案:
Makefile:
DISC := left
CFLAGS += -DNAME=$(DISC)
C或C ++源代码:
#define STR(s) STR2(s)
#define STR2(s) #s
#define EXPAND(s) s
#include STR(EXPAND(NAME)_header.h)
答案 1 :(得分:0)
替代解决方案; 考虑使用代理文件。请参阅下面有关混合宏和#include的更多详细信息。
在Makefile中,创建v_header.h
echo'#include“ $ {DISC} _header.h”'> v_header.h
可以包含哪些
#include“ v_header.h”
目前,cpp语法不允许'#include'语句的一部分使用宏。它必须是““ path.h””或“。预处理指令(以“#”开头的行)未处理“ stringifaction”运算符(“#”和“ ##”)
// Not working
#include NAME
#include #NAME
#include "#NAME"
#include "##NAME"