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间接使用。
include Rules.make,但是我惊奇的发现,原来可以用的DEBUG_OPTION,现在不见了。无奈之下在Rules.make中定义了另外的变量它引用comp中的DEBUG_OPTION的值,结果又可以调试了。就这样我发现include文件里变量的使用范围问题。这样Makefile包含Rules.make,而Rules.make内却包含comp,这样问题就解决了。一个变量只能在自己所在的文件和被包含的文件所使用,不能越级使用。比如Makefile就不能直接使用DEBUG_OPTION的值,而必须通过Rules.make间接使用。
相关文章推荐
- 关于web应用程序的范围与session变量丢失问题的深入研究!
- 关于keil多c文件工程中bit变量的声明定义问题
- 关于头文件定义全局变量等问题
- 头文件定义变量的问题
- 关于WinForms读取资源文件.resx时的变量声明问题
- 头文件定义全局变量等问题
- 51平台下初始化文件的引入导致全局变量无法初始化的问题
- windows运行不了.bat文件(环境变量设置问题导致)
- 【MYSQL】定义整形变量时需要注意范围的问题
- linux环境下不同脚本文件配置的环境变量作用域范围的区别
- delphi单元的变量和函数访问权限问题(访问范围/生命周期)
- 【原创_解析】关于static型变量被外部文件修改的问题..
- c# in deep 之对Linq表达式范围变量限制问题的一些解决办法
- 头文件中定义const全局变量应注意的问题
- 指针操作超越变量作用范围的问题(高质量c++)
- [转]头文件定义全局变量等问题
- springboot无法完成变量从pom到.properties文件自动替换的问题
- 文件格式造成的环境变量问题
- 变量的作用域的范围问题
- 关于 thinkphp import 文件内容变量失效问题