打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
makefile常用讲解(3)
8)objects = *.o
通配符同样可以用在变量中。并不是说[*.o]会展开,objects的值就是“*.o”。Makefile 中的变量其实就是 C/C++中的宏。如果你要让通配符在变量中展开,也就是让 objects 的值是所有[.o]的文件名的集合,那么,你可以这样:objects := $(wildcard *.o),这种用法由关键字“wildcard”指出。
9)通过makefile编译,自动推导,如果发现当前的文件没有做过更新,则不会编译,只编译更新过了的。
附:
1、预定义变量选项
预定义变量
含义
$*
不包含扩展名的目标文件名称。
$+
所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<
第一个依赖文件的名称。
$?
所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@
目标的完整名称。
$^
所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%
如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR
归档维护程序的名称,默认值为 ar。
ARFLAGS
归档维护程序的选项。
AS
汇编程序的名称,默认值为 as。
ASFLAGS
汇编程序的选项。
CC
C 编译器的名称,默认值为 cc。
CCFLAGS
C 编译器的选项。
CPP
C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS
C 预编译的选项。
CXX
C++ 编译器的名称,默认值为 g++。
CXXFLAGS
C++ 编译器的选项。
2、make 选项
命令行选项
含义
-C DIR
在读取 makefile 之前改变到指定的目录 DIR。
-f FILE
以指定的 FILE 文件作为 makefile。
-h
显示所有的 make 选项。
-i
忽略所有的命令执行错误。
-I DIR
当包含其他 makefile 文件时,可利用该选项指定搜索目录。
-n
只打印要执行的命令,但不执行这些命令。
-p
显示 make 变量数据库和隐含规则。
-s
在执行命令时不显示命令。
-w
在处理 makefile 之前和之后,显示工作目录。
-W FILE
假定文件 FILE 已经被修改。
3、示例代码
CC=gcc
CXX=g++
CFLAGS= -g -Wall
INC=./***
LIB=./***.a
CFLAGS+= -DSNACC_DEEP_COPY -DHAVE_VARIABLE_SIZED_AUTOMATIC_ARRAYS -Wno-deprecated -lpthread -lssl
TARGET=***
OBJ = **.o \
./**.o\
$(TARGET): $(OBJ)
$(CXX) $(CFLAGS) -o $@ $^ $(LIB)
#如下代码,把所有的cpp文件编译成.o文件
%.o: %.cpp
$(CXX)  $(CFLAGS) $(INC) -c -o $@ $<
clean:
rm -f *.o
rm -f $(TARGET)
参考
【1】 http://www.cnblogs.com/goodcandle/archive/2005/11/17/278702.html
【2】 www.wenku.baidu.com
【3】 http://www.chinaunix.net/jh/23/408225.html
【4】 http://www.gnu.org/software/make/manual/make.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Makefile的简要介绍
移植中Makefile学习 关键字理解
分布式编译
【教程】搭建 Windows 下基于 MSYS 的交叉编译开发环境
向大家推荐一个C/C 通用Makefile
Windows下程序向Linux下移植细节
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服