Makefile 宏定义的蹊跷问题
今天需要准备在Makefile中增加一个变量方便其他同事进行 功能控制,可是宏定义死活在代码判断失败 ,大概如下面的代码 不论有没有配置都是显示 define ABC,后来想了想会不会是符号冲突了 换过几个 也是同样的问题。。很困扰....#ifdef ABC
printf ("define ABC\n");
#else
printf ("Undefine ABC\n");
#endif
后来我自己写个测试程序吧,如下test.c :#include <stdio.h>
int TEST (void)
{
#ifdef ABC
printf ("Define ABC\n");
#else
printf ("UnDefine ABC\n");
#endif
return 0;
}
arm-linux-gcc -c test.c -fPIC-DABC
arm-linux-gcc -shared test.o -o libtest.so
调用程序如下:#include <stdio.h>
extern int TEST(void);
int main (void)
{
TEST();
return 0;
}arm-linux-gcc main.c -o define_test -L . -ltest
通过增加和关闭-DABC 确实起到了作用。
但是同样的方式添加到了 项目里面就出了问题,实在是很恶心 找不到头绪,有没有遇到的朋友, 给指点一下 哪里可能出问题。。。谢谢
没明白,是不是你搞混了环境变量和预定义宏了?
hanzhenlll 发表于 2016-06-16 16:43 static/image/common/back.gif
今天需要准备在Makefile中增加一个变量方便其他同事进行 功能控制,可是宏定义死活在代码判断失败 ,大 ...
makefile和c两回事吧 本帖最后由 hanzhenlll 于 2016-06-17 10:31 编辑
回复 3# 流氓无产者
ENCFLAG = ENC_FLAG_H265
CFLAGS+= -O2 -W -Wall -lsys -I$(TOP)/source/lib $(SHAREFLAGS) -D$(ENCFLAG)
arm-linux-gcc -O2 -W -Wall -I./ -I/home/hanXXX/source/trunk/source/lib/mpplib/../../..//images/include -I/home/hanXXX/source/trunk/source/lib/mpplib/../../..//images/include/viXXX_api -I ./venc/include -I/home/hanXXX/source/trunk/source/lib/mpplib/../../..//images/include/viXXX_api/include/freetype2/ -I/home/hanXXX/source/trunk/source/lib/mpplib/../../..//images/include/hevclib -O2 -W -Wall -lsys -I/home/hanXXX/source/trunk/source/lib/mpplib/../../..//source/lib -fPIC -DENC_FLAG_H265 -I ./include -I ./isp_newae -I ./vi -I ./vo -I ./vo/de -I ./vo/tv -I ./vo/mdin340 -I ./venc -I ./sys -c -o vo/mdin340/mdinipc.o vo/mdin340/mdinipc.c
Makefile 东西较多 不方便帖,能确定的时候编译的时候 参数已经将参数配置进去,不过不能生效。
页:
[1]