.config文件中定义的预处理器宏在c文件中不可见

时间:2017-10-07 13:06:14

标签: c makefile macros preprocessor

我在.config文件中有预处理器宏,如下所示

CONFIG_IDENTIFIER=y  

然后,Makefile内容如下

-include .config
OBJ += ./src/myfile.o
....
myapp: $(OBJS)
    $(CC) $(LDFLAGS) -o myapp $(OBJS)
    @$(E) "  LD " $@

然后在./src/myfile.c文件中,我尝试使用perprocessor宏,如下所示,

#ifdef CONFIG_IDENTIFIER
.... /* Compiler does not execute in here */
....
#endif  

但是无法在./src/myfile.c文件中获取预处理器宏定义。对此有何帮助?

2 个答案:

答案 0 :(得分:1)

CONFIG_IDENTIFIER不是预处理器宏,它是一个make变量,就像OBJS一样。

答案 1 :(得分:0)

  

我在.config文件中有预处理器宏,如下所示

CONFIG_IDENTIFIER=y  

这定义了Makefile的本地变量。 定义C预处理器宏。

要使其成为C预处理器宏,您可以像这样调整Makefile:

-include .config
CFLAGS += -DCONFIG_IDENTIFIER=$(CONFIG_IDENTIFIER)
....