【1】添加宏两种方法定义 -D DEFINES 和 -D DEFINES=CONDITION 【2】附加到宏定义CFLAG之后
1、$(CC) -MM $< >$@.tmp; 2、sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.tmp > $@; 这两条命令的意思就是: 1、第一步使用cc -MM 生成.o文件的依赖(如:main.o: main.c add.h ) 2、第二步使用sed 命令将".o:"文件替换成".o .d:" (如:main.o: 替换成 main.o mai...
Makefile中-D参数 一般Makefie里的 -DHAVE_CONFIG_H是作为CFLAGS参数传给gcc的。 gcc [-c|-S|-E] [-std=standard] [-Dmacro[=defn]...] [-Umacro] [/code] 查man手册知,就是通过 gcc -DHAVE_CONFIG , 定义了 HAVE_CONFIG_H 这个宏。 -D 选项表示定义一个宏 在源文件里这样的引入方式,就会把...
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 Makefile带来的好处就是——“自动化编译”,...
d 磁碟機 p 路徑 f 檔案基底名稱 e 副檔名例如,如果檔案名為 c:\prog.exe:%s 變成c:\prog.exe %|F 變成c:\prog.exe %|dF 變成c %|pF 變成c:\ %|fF 變成prog %|eF 變成exe 您還想知道關於哪些方面的詳細資訊?Makefile 中的內嵌檔案另...
include $(sources:.c=.d) endif 基于上面的这个例子,只要我们输入的命令不是“make clean”,那么makefile会自动包含“foo.d”和“bar.d”这两个makefile。 使用指定终极目标的方法可以很方便地让我们编译我们的程序,例如下面这个例子: .PHONY: all
[...] :: ex. [abcd] 表示a,b,c,d中任意一个字符, [^abcd]表示除a,b,c,d以外的字符, [0-9]表示 0~9中任意一个数字 ~ :: 表示用户的home目录 2.1.3 路径搜索 当一个Makefile中涉及到大量源文件时(这些源文件和Makefile极有可能不在同一个目录中), ...
make -j 允许并行执行(多核编译)。 高级用法 - 条件判断 Makefile也支持条件判断,这在不同环境需要执行不同命令时非常有用。 ifeq ($(OS),Windows_NT) RM=del /Q else RM=rm -f endif clean: $(RM) *.o 使用变量和文件包含来组织Makefile ...
make程序就知道如何更新目标文件了,而不是整个进行重编译,但这个操作可以看出是非常消耗时间及傻瓜式的,作为解决方案我们可以通过使用编译器命令 –M选项来自动完成该工作,比如在main.c中#include “defs.h”,通过 cc –M main.c将产生输出 main.o:main.c defs.h,我们可以将输出结果写到 .d文件中,然后通过...