自动化编译 - makefile

文章目录[x]
  1. 1:makefile的简介
  2. 1.1:all:
  3. 1.2:main:main.cpp
  4. 1.3:gcc -o main main.cpp
  5. 1.4:clean:
  6. 1.5:执行make命令
  7. 2:makefile文件中的变量
  8. 2.1:变量的定义

在软件工程中的源代码文件很多,按照类型、功能、模块放在若干个目录中,哪些文件需要编译,哪些文件需要后编译,哪些文件需要重新编译,就有了编译的工具。

linuxunix中,有一个强大的编译工具make,可以用它来管理多模块程序的编译和连接,直到生成可执行文件。

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:DelphimakeVisual C++nmakeLinuxGNUmake。可见,makefile都成为了一种在工程方面的编译方法。

makefile的简介

make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序。假如现在需要通过gcc命令编译两个cpp文件,在项目目录下创建makefile文件:

all: main main2
main:main.cpp
gcc -o main main.cpp
mv main bin/.
main2:main2.cpp
gcc -o main2 main2.cpp
mv main2 bin/.
clean:
rm -rf bin/main bin/main2

all:

表示需要编译目标程序的清单,中间用空格隔开

main:main.cpp

main相当于标签,后面为依赖的文件。表示编译main需要依赖的文件为main.cpp,当main.cpp的内容发生了变化后,执行make会重新编译main

gcc -o main main.cpp

和下一行的一样是cmd命令,前面是tab符号。表示将其编译为可执行文件后,移动到bin目录下。

clean:

clean标签,表示执行下面的命令来删除之前编译完成的可执行文件。

执行make命令

在编辑完makefile文件后,执行make命令,就会执行all标签对应的2个标签。

还可以执行其中单独的标签:

make clean
make main

会执行clean和main标签下对应的命令。

makefile文件中的变量

makefile中,变量就是一个名字,变量的值就是一个文本字符串。在makefile中的目标,依赖,命令或其他地方引用变量时,变量就会被它的值替代。

变量的定义

变量的定义为 :变量名=值,在其他地方引用使用$(变量名)来进行引用。

CC=GCC

如之前的例子可以改成:

#定义变量CC和FLAG

CC=gcc
FLAG=-o
all: main main2
main:main.cpp
$(CC) $(FLAG) main main.cpp
mv main bin/.
main2:main2.cpp
$(CC) $(FLAG) main2 main2.cpp
mv main2 bin/.
clean:
rm -rf bin/main bin/main2

 

 

 

 

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00