Windriver的编译流程 和 简洁的编译脚本

本文介绍了Windriver Workbench IDE如何生成Makefile脚本的过程。主要包括使用隐藏文件`.wrmakefile`作为模板,根据用户设置自动生成编译配置,并递归地创建和编译整个项目中的所有子目录。
分析了一下Windriver的makefile脚本,结构很清晰。 windriver的workbench生成的makefile的过程大概如下:
1、每个IDE里的项目都有一个makefile的模版,名字叫 “.wrmakefile”  用句号作为开头是因为Eclipse的项目管理可以设置过滤器,不显示本文件。
          该文件的大概内容:
 

all : subdirs_all main_all 

#macros and complier flags generated by IDE

%IDE_GENERATED% 

 

-include *.makefile

 

main_all : check_objectdir  $(PROJECT_TARGETS)

    @echo "make: built targets of `pwd`"

 

check_objectdir :

    @if [ ! -d "$(OBJ_DIR)" ]; then/

       mkdir -p $(OBJ_DIR);/

    fi

 


# recursive make in SUBDIRS

subdirs_all :

    @_PWD=`pwd`;/

    for dir in _dummy_ $(SUBDIRS); do/

       if [ "$$dir" = "_dummy_" ]; then/

           continue ;/

       fi;/

       if [ ! -d "$$dir" ]; then/

           continue ;/

       fi;/

       echo "Recursive make: Changing to Directory '$$dir'";/

       cd "$$dir";/

       "$(MAKE)" -f "$(MAKEFILE)" $(MFLAGS) all || exit;/

       echo "Recursive make: Changing back to Directory '$$_PWD'";/

       cd "$$_PWD";/

    done

 

clean ::

    @_PWD=`pwd`;/

    for dir in _dummy_ $(SUBDIRS); do/

       if [ "$$dir" = "_dummy_" ]; then/

           continue ;/

       fi;/

       if [ ! -d "$$dir" ]; then/

           continue ;/

       fi;/

       echo "Recursive make: Changing to Directory '$$dir'";/

       cd "$$dir";/

       "$(MAKE)" -f "$(MAKEFILE)" $(MFLAGS) $@ || exit;/

       echo "Recursive make: Changing back to Directory '$$_PWD'";/

       cd "$$_PWD";/

    done


 上述的 subdirs_all  目标表示递归的编译子目录。


2、 用户设置好当前项目的编译属性后,IDE自动生成这些属性所对应的符合makefile语法的语句,插入到上述  %IDE_GENERATED%  的地方。并根据这些内容,在当前目录下生成一个makefile文件
 
3、在每一个子目录下,重复上述工作,根据用户的设置,保证要编译的子目录下都产生正确的makefile文件。

4、调用make命令,make命令就会根据上述生成的makefile 递归的编译整个项目。

当然在启动命令之前,IDE需要把make命令的路径,以及makefile里调用的命令,如gcc 等加入到系统的搜索路径。 以及设置一些makefile里必须的全局环境变量,如SDK的根目录等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值