暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Makefile规则.docx
50
25页
3次
2024-08-20
5墨值下载
1.相关概念
Makele 是什么?
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,akele
定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新
编译,甚至于进行更复杂的功能操作。
Make Makele 的关系
make 是一个命令工具,它解释 Makele 中的指令。在 makele 文件中描述了整个工程
所有文件的编译顺序、编译规则(编译依赖、编译后生成的目标文件叫什么等)。
Makele 命名规则
akele makele,一般使用 Makele
Cmake 又是什么?
ake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编
译过程)。它可以输出各种各样的 makele 或者 project 文件,能测试编译器所支持的
C++特性,类似 UNIX 下的 automake。只是 CMake 的组态档取名为
CMakeLists.txtCMake 并不直接构建出最终的软件,而是产生的标准的建构档(如
UNIX Makele 或者 Windows Visual C++projects/workspaces),然后再依一
般的构建方式使用。
CMake CMakeLists 的关系
cmake 是一个命令工具,可以用来生成 makele。但也要根据 CMakeLists.txt 中的内容来生
成,CMakeLists.txt 就是写给 cmake 的规则。
重点
make 是一个命令工具,Makele 是一个文件,make 执行的时候,去读取 Makele 文件
中的规则,重点是 makele 得自己写。
cmake 是一个命令工具,CMakeLists.txt 是一个文件,cmake 执行的时候,去读取
CMakeLists.txt 文件的规则并生成 Makele,重点是 CMakeLists.txt 得自己写。
PS:碰到过面试问 makele cmake 有什么区别。
2. hello-world 开始
Makele 基本语法
目标:依赖 (中间是冒号)
ab 命令
目标:一般是指要编译的目标,也可以是一个动作
依赖:指执行当前目标所要依赖的先项,包括其他目标,某个具体文件或库等。即依赖中的命令
先执行完成。例如 aclean 表示在执行 a 之前先执行 clean 下的命令。
一个目标可以有多个依赖。
命令:该目标下要执行的具体命令,可以没有,也可以有多条
多条时,每条命令占一行
例一(创建一个 akele
a:b c
@echo "hello world"
b:
@echo "hello b"
c:
@echo "hello c"
执行:make (默认执行第一个目标 a,而 a 依赖了 b c,所以先打出 hello b, hello c,再输
hello world)
make b (直接输出 hello b
make c (直接输出 hello c
例二(创建一个 akele


列出当前目录下所有文件名
gcc 编译 main 文件,生成可执行文件 a.out
clean:
@rm -rf a.out #每次重编之前可以先执行 make clean 将原来生成的可执行文件删除

执行:make
make clean
make
make 常用选项
make[-f le][options][target]
make 默认在当前目录中寻找 GUNmakelemakeleMakele 文件作为 make 的输
入文件。
查看所有选项
可以指定除上述文件名之外的文件作为输入文件
 显示版本号
只输出命令,但并不执行,一般用来测试
只执行命令,但不显示具体命令,此处可在命令中用符抑制命令输出。
w 显示执行前执行后的路径
指定 makele 所在的目录
没有指定目标时,默认使用第一个目标
of 25
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。