您的位置:首页 > 其它

Make include文件问题及所属的变量的范围问题

2009-04-10 14:06 197 查看
最近因为工作关系需要撰写Makefile,因为需要在调试版和发布版之间自动切换。所以单独生成一个文件comp,在comp中有一变量DEBUG_OPTION,其值在调试模式下是"-g -Wall -DDEBUG",在发布模式下是"-Wall -O2".这样在Makefile中include comp,就解决了调试与发布之间的自动切换的问题。但是随着工程的进展,程序需要在多个平台比如Linux、Mac、Solaris,同时运行,由于平台不同,编译选项的不同,如果编写为多个规则写出多个平台的规则的话那是相当的麻烦。所以引入了另外一个文件Rule.make,这个文件处理多个平台的编译选项问题。这样在同一个Makefile中就要包括两个文件,这样问题就来了。代码是这样的:include comp
include Rules.make,但是我惊奇的发现,原来可以用的DEBUG_OPTION,现在不见了。无奈之下在Rules.make中定义了另外的变量它引用comp中的DEBUG_OPTION的值,结果又可以调试了。就这样我发现include文件里变量的使用范围问题。这样Makefile包含Rules.make,而Rules.make内却包含comp,这样问题就解决了。一个变量只能在自己所在的文件和被包含的文件所使用,不能越级使用。比如Makefile就不能直接使用DEBUG_OPTION的值,而必须通过Rules.make间接使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: