第二十一课 打造专业的编译环境(中)

 1 .PHONY : all compile link clean rebuild
 2
 3 MODULES := common  4            module  5            main
 6
 7 MKDIR := mkdir
 8 RM := rm -fr
 9
10 CC := gcc
11 LFLAGS :=
12
13 DIR_PROJECT := $(realpath .)
14 DIR_BUILD := build
15 DIR_BUILD_SUB := $(addprefix $(DIR_BUILD)/, $(MODULES))
16 MODULE_LIB := $(addsuffix .a, $(MODULES))
17 MODULE_LIB := $(addprefix $(DIR_BUILD)/, $(MODULE_LIB))
18
19 APP := app.out
20 APP := $(addprefix $(DIR_BUILD)/, $(APP))
21
22 all : compile $(APP)
23     @echo "Success! Target ==> $(APP)"
24
25 compile : $(DIR_BUILD) $(DIR_BUILD_SUB)
26     @echo "Begin to compile ..."
27     @set -e; 28     for dir in $(MODULES); 29     do 30         cd $$dir && $(MAKE) all DEBUG:=$(DEBUG) && cd .. ; 31     done
32     @echo "Compile Success!"
33
34 link $(APP) : $(MODULE_LIB)
35     @echo "Begin to link ..."
36     $(CC) -o $(APP) -Xlinker "-(" $^ -Xlinker "-)" $(LFLAGS)
37     @echo "Link Success!"
38
39 $(DIR_BUILD) $(DIR_BUILD_SUB) :
40     $(MKDIR) [email protected]
41
42 clean :
43     @echo "Begin to clean ..."
44     $(RM) $(DIR_BUILD)
45     @echo "Clean Success!"
46
47 rebuild : clean all

原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9735215.html

时间: 2024-11-08 11:21:41

第二十一课 打造专业的编译环境(中)的相关文章

第二十二课 打造专业的编译环境(下)

顶层目录如下: 顶层makefile: 1 include pro-cfg.mk 2 include cmd-cfg.mk 3 include pro-rule.mk cmd-cfg.mk: 1 AR := ar 2 ARFLAGS := crs 3 4 CC := gcc 5 LFLAGS := 6 CFLAGS := -I$(DIR_INC) -I$(DIR_COMMON_INC) 7 8 ifeq ($(DEBUG),true) 9 CFLAGS += -g 10 endif 11 12

makefile(08)_打造专业的编译环境

20.打造专业的编译环境(上)_模块Makefile设计 20.0. 实验材料 项目架构:其中各个文件的内容请自己填写. 20.1.大型项目的目录结构(无第三方库) 20.2.项目架构设计分析 项目被划分为不同的多个模块:每个模块用一个文件夹进行管理,文件由inc, src, makefile构成每个模块的对外函数统一放置于common/inc中,如common.h xxxfunc.h 20.3.项目目标 工程项目中不希望源文件夹在编译时被改动(只读文件夹)在编译时自动创建文件夹(build)用

打造专业的编译环境(十四)

在一些大型的项目中,它的结构是很复杂的.比如下面这个 我们来分析下这个项目的架构,项目被划分为多个不同模块.每个模块的代码用一个文件夹进行管理,文件夹由 inc,src,makefile 组成:每个模块的对外函数声明统一放置于 common/inc 中,如:common.h xxxfunc.h. 那么我们需要打造的编译环境是:1.源码文件夹在编译时不能被改动(只读文件夹):2.在编译时自动创建文件夹(build)用于存放编译结果:3.编译过程中自动生成依赖关系,自动搜索需要的文件:4.每个模块可

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

make--打造专业的编译环境

一.项目的目录结构 分析A.项目被划分为多个不同模块1.每个模块的代码用一个文件夹进行管理--文件夹由inc,src,makefille构成2.每个模块的对外函数声明统一放置于common/inc中--如:commom.h xxxfunc.hB.需要打造的编译环境1.编码文件夹在编译时不能被改动2.在编译时自动创建文件夹用于存放编译结果3.编译过程中能够自动生成依赖关系,自动搜索需要的文件4.每个模块可以拥有自己独立的编译方式5.支持调试版本的编译选项C.解决方案的设计第1阶段:将每个模块中的代

第二十一课:属性模块2

上一课主要讲了属性的概念,用法,固有属性和自定义属性的区别,class属性操作的方法等,这一课主要讲一些有关属性操作的兼容性问题. IE6-IE8在一些表示URL的属性会返回补全的改过编码的路径,比如:href,action,background,cite,data,src,url等.我们只需要用getAttribute(href,2),就能很好的兼容各种浏览器了.标准浏览器不支持第二个参数,因此忽略第二个参数.而IE支持第二个参数,2代表只取出原字符串的值. IE6-7下,对于form元素,调

第二十一课 图层蒙版和快速蒙版

一.       图层蒙版   1.概念:     ◆使用蒙版可保护部分图层,该图层不能被编辑.蒙版可以控制图层区域内部分内容可隐藏或是显示.更改蒙版可以对图层应用各种效果,不会影响该图层上的图像. ◆图层蒙版是灰度图像,因此用黑色绘制的内容将会隐藏,用白色绘制的内容将会显示,而用灰色色调绘制的内容将以各级透明度显示. ◆添加蒙版后,我们所做的操作是作用在蒙版上,而不是图层上. ◆其常用于图像的合成中,让两个图像无缝的合成在一起 2.             蒙版的常用操作 [添加蒙版]:单击图

Linux云自动化运维第二十一课

第二单元 高级网络配置 一.网络桥接 网络桥接用网络桥实现共享上网主机和客户机除了利用软件外,还可以用系统自带的网络桥建立连接用双网卡的机器做主机 二.网络桥接的配置 1.vim /etc/sysconfig/network-scripts/ifcfg-eth0 - BRIDGE=br0 2.vim /etc/sysconfig/network-scripts/ifcfg-br0 – TYPE=Bridge 3.示例: [[email protected] Desktop]# vim /etc/

AGG第二十一课 agg::conv_contour 扩展轮廓线

1前言 轮廓线就是图形的边界,任何封闭的顶点源跳过agg::conv_stroke阶段,将会描绘实心的图形,填充的颜色和边界保持一致.如果不封闭的顶点源一旦跳过agg::conv_stroke就什么也不绘制.agg::conv_stroke就是用来描绘图形边界的. 和agg::trans_affine对比可知,agg::conv_contour是扩展图形的轮廓线,通俗一点就是拓展图形的边界,对图形的边界进行放缩(但是和agg::trans_affine仿射变换不同,这是中心位置不变的缩放). 2