免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2235 | 回复: 3

[C] Makefile 宏定义的蹊跷问题 [复制链接]

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
发表于 2016-06-16 16:43 |显示全部楼层

今天需要准备在Makefile中增加一个变量  方便其他同事进行 功能控制,可是宏定义死活在代码判断失败 ,大概如下面的代码 不论有没有配置都是显示 define ABC,  后来想了想会不会是符号冲突了 换过几个 也是同样的问题。。很困扰....
  1. #ifdef ABC
  2. printf ("define ABC\n");
  3. #else
  4. printf ("Undefine ABC\n");
  5. #endif
复制代码
后来我自己写个测试程序吧,如下test.c :
  1. #include <stdio.h>

  2. int TEST (void)
  3. {
  4. #ifdef ABC
  5.         printf ("Define ABC\n");
  6. #else
  7.         printf ("UnDefine ABC\n");
  8. #endif
  9.         return 0;
  10. }
复制代码
arm-linux-gcc -c test.c -fPIC  -DABC
arm-linux-gcc -shared test.o -o libtest.so


调用程序如下:
  1. #include <stdio.h>


  2. extern int TEST(void);


  3. int main (void)
  4. {
  5.         TEST();
  6.         return 0;
  7. }
复制代码
arm-linux-gcc main.c -o define_test -L . -ltest


通过增加和关闭  -DABC 确实起到了作用。

但是同样的方式添加到了 项目里面就出了问题,  实在是很恶心 找不到头绪,有没有遇到的朋友, 给指点一下 哪里可能出问题。。。谢谢

论坛徽章:
0
发表于 2016-06-16 22:11 |显示全部楼层
没明白,是不是你搞混了环境变量和预定义宏了?

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
发表于 2016-06-17 09:25 |显示全部楼层
hanzhenlll 发表于 2016-06-16 16:43
今天需要准备在Makefile中增加一个变量  方便其他同事进行 功能控制,可是宏定义死活在代码判断失败 ,大 ...

makefile和c两回事吧

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
发表于 2016-06-17 10:27 |显示全部楼层
本帖最后由 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 东西较多 不方便帖,  能确定的时候编译的时候 参数已经将参数配置进去,  不过不能生效。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP