当前位置:  开发笔记 > 编程语言 > 正文

makefiles CFLAGS

如何解决《makefilesCFLAGS》经验,为你挑选了2个好方法。

在学习tinyos的过程中,我发现我对makefile完全无能为力.

有许多可选的编译时功能可以通过声明预处理器变量来使用.

要使用它们,您必须执行以下操作:

CFLAGS="-DPACKET_LINK" 这可以实现某个功能.

CFLAGS="-DPACKET_LINK" "-DLOW_POWER" 启用两个功能.

有人可以为我解剖这些行并告诉我发生了什么事吗?不是在tinyos方面,而是在makefile方面!



1> Isak Savo..:

CFLAGS是一个最常用于向编译器添加参数的变量.在这种情况下,它定义宏.

所以这-DPACKET_LINK相当于在项目中放置#define PACKET_LINK 1所有.c和.h文件的顶部.最有可能的是,您的项目中有代码,可以查看这些宏是否已定义并根据具体情况执行操作:

#ifdef PACKET_LINK
// This code will be ignored if PACKET_LINK is not defined
do_packet_link_stuff();
#endif

#ifdef LOW_POWER
// This code will be ignored if LOW_POWER is not defined    
handle_powersaving_functions();
#endif

如果你在makefile中向下看,你应该看到它$(CFLAGS)可能用作:

$(CC) $(CFLAGS) ...some-more-arguments...


`-DPACKET_LINK`相当于`#define PACKET_LINK 1`.如果你想要`#define PACKET_LINK`,那么你应该使用`-DPACKET_LINK =`

2> Ilya..:

在makefile中的某个地方,CFLAG将在编译行中使用,如下所示:
$(CC) $(CFLAGS) $(C_INCLUDES) $<

并最终在执行中将被翻译为:

gcc -DPACKET_LINK -DLOW_POWER -c filename.c -o filename.o

此定义将传递给头文件中定义的源代码

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有