QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1746|回复: 1

MAKEFILE之共同进步!

[复制链接]
发表于 2003-4-29 15:41:11 | 显示全部楼层 |阅读模式
***************************************************************************************************************************
整理的一些makefile问题:
.PHONY (假想目标):它可以改善同名的目标,通常用于一些外部命令,如果没有定义为假象目标,那么它就会认为你
                      所定义的目标已经式最新的了,所以它肯定不会执行,必须定已为假象目标。
discussion:
        也就是说你所定义的虚拟目标如果要执行必须打入make 虚拟目标名
        如果用到假象目标即特殊目标其格式如下:
        假象目标:虚拟目标
        虚拟目标:
                命令
        用了假象目标的好处就是以后执行make命令他会总是更新虚拟目标,而不管其是否已经最新
********************************************************************************************************(关于假象目标的问题)
                                                                                       
                                                                                       
                                                                                       
***************************************************************************************************************************                                                                                       
知道在makefile中| 和 < ,>的意思?是否是想在unix中一样|代表是pipe的意思,而<,>为重定位?
而在tornado的参考资料中查找到
Simple Constraints question:                                                               
<内存操作数地址的自减
>内存操作数地址的自增
原文:
`<'
A memory operand with autodecrement addressing (either predecrement or postdecrement) is allowed.
`>'
A memory operand with autoincrement addressing (either preincrement or postincrement) is allowed
实例:
        $(CC) -M -MG $(CFLAGS) $(wildcard *.[c] $(CONFIG_ALL)/*.[c]) > $@
#cc=gcc
#这句话是我从制作自动生成依赖文件中提出来的即depend.xxxx(xxxx表示任何名字)
#-M和$(wildcard)函数是为了把所有的.c所依赖的文件给扩展并自动生成依赖文件
#$@的作用是第一个目标
#那么>$@所在的整句话的意思是什么呢?
<,>以及|到底什么意思呢?
***********************************************************************************************************("| ,< ,>"的用法)




***************************************************************************************************************************
override variable = value
override variable := value
override variable += value
override define variable
看到makefile中这种定义,它代表什么意思呢?
*****************************************************************************************(其中定义时,override是什么意思?)




***************************************************************************************************************************
ifneg(arg1,arg2)                                                                                    
判断语句,判断参数arg1和arg2是否不同,如果不同则执行相关语句,起执行语句为:                        
ifneg(arg1,arg2)                                                                                    
//word;                                                                                             
else                                                                                                
//word;                                                                                             
endif                                                                                               
else   #可以这样定义,在endif之后还可以else?有什么用呢?有这个必要吗?                                                                                             
//word;                                                                                             
endif                                                                                               
*************************************************************************************************************** (ifneg语法)






***************************************************************************************************************************
比如有两个文件makefile和aa文件,makefile中定义了个变量比如为a=path,且在makefile的内容如下:
#makefile
a=path
include aa
.......
#aa
a=path       //有这个必要吗?
ifneg(a,)   
.......
在aa文件中也需要用到a这个变量,那么还需要在aa中定义吗?可以直接从makefile这个文件中调用吗?
这个问题就是关于在makefile中定义了多次变量所产生的后果,且是同一个变量,那么如果有执行语句
它是应该执行先前定义的变量还是之后定义的变量呢?别如说

GCC=gcc

cfile:cfile.c
        GCC -o cfile.o cfile.c

GCC=g++       

那么它是调用gcc还是后者g++呢,这里虽然用前后者都无所谓,但我们讨论的不是执行结果,而是变量的
调用次序,另外也从中提出了,makefile在调用变量时是用何种策略的。其次,makefile可以用include调用
多个文件,那么文件中定义了同样的变量,makefile又是如何去选择变量引用的呢?
*********************************************************************************************** *************(变量调用问题)
***************************************************************************************************************************
ifeq ($(LIBNAME),)
LIBNAME                = lib$(CPU)$(TOOL)vx.a
endif
***********************************************************(条件结构混乱的疑问:变量未声明然后判断,执行结果又是变量的定义)




***************************************************************************************************************************
在makefile中的变量有没有区分大小写?
******************************************************************************************************(关于区分大小写的问题)



***************************************************************************************************************************
vxrm命令是在tornado下的命令,是什么指令?
应该是删除指令,就像linux下的rm命令一样,但它与rm指令有何区别?
******************************************************************************************************************(命令vxrm)






***************************************************************************************************************************
在makefile中有循环语句伐?
instance:
        docs:
        @echo Processing
        @for %f in (sysLib sysTffs tyCoDrv) do @if exist %f.c @echo %f.c & \#其中的for...in ....do???
            $(CPP) $(CASFLAGS) -C $(DOCFLAGS) %f.c > %f.i & \
            $(REFGEN) -mg -book BSP_Reference -chapter $(TARGET_DIR) \
                -out $(DOC_DIR)\$(TARGET_DIR) %f.i & \
            $(RM) %f.i & \
            $(HTMLLINK) $(DOCS_ROOT)/vxworks/bsp/$(TARGET_DIR)
            the for ... in ... do in instance whether loop?
我在makefile文档中没有查到相关的资料,其中的condition只有if相关的条件语句,该实例选自tornado中的ads8260
makefile调用h/make/下的文档            
**************************************************************************************************************(makefile疑问)


不知谁对tornado,vxwork熟悉,以及makefile熟悉,能否将其学习资料,以及学习心得拿出来让我们一起探讨技术问题
以及好的网站,好的资料下载站点,论坛等。愿我们一同进步!
如果谁愿意与我一起讨论相关问题,请email给我,[email protected]


MAKEFILE之共同进步!
发表于 2003-4-30 20:24:02 | 显示全部楼层
tornado,vxwork的资料可以在windriver的官方网站上下到阿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 01:47 , Processed in 0.056387 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表