一、MakeFile

1.1 结构:

targets:prerequisites

  command

1.2 gcc编译:-g,-o,-c,-D,-w,-W,-Wall,-O3

-c:源文件进行编译汇编,但不进行链接

示例:

gcc -c test.cpp -o test

-c后跟多源文件情况

      -c后跟多个源文件,会为每个源文件生成一个.o文件,但此时是不能使用-o的。

参考链接:gcc编译选项-o和-c介绍_gcc -o_chengqiuming的博客-CSDN博客

1.3 自动化变量

自动化变量

说明

$@

表示目标文件

$%

当目标文件是一个静态库文件时,代表静态库的一个成员名。

$<

表示第一个依赖文件。

$^

代表的是所有依赖文件。

$?

所有比目标文件更新的依赖文件列表。

$+

类似“$^”,但是它保留了依赖文件中重复出现的文件。主要用在程序链接时库的交叉引用场合。

$*

在模式规则和静态模式规则中,代表“茎”。“茎”是目标模式中“%”所代表的部分(当文件名中存在目录时,

test:test.o test1.o test2.o

         gcc -o $@ $^

test.o:test.c test.h

         gcc -o $@ $<

test1.o:test1.c test1.h

         gcc -o $@ $<

test2.o:test2.c test2.h

         gcc -o $@ $<

GNU make 中在这些变量中加入字符 "D" 或者 "F" 就形成了一系列变种的自动化变量,这些自动化变量可以对文件的名称进行操作。

D表示目录部分,F表示文件部分。如:$(@D)、 $(@F)

1.4 目标文件搜索

4.1 VPATH

VPATH := src car

test:test.o

    gcc -o $@ $^

先搜索 src 目录下的文件,再搜索 car 目录下的文件。

4.2 vpath

vpath test.c src car

在两个路径里搜索test.c文件

1.5 伪目标

clean:

    rm -rf *.o test

猜你喜欢

转载自blog.csdn.net/qq_39825430/article/details/131982046
今日推荐