- 43
- 0
工作需要最近在看make
在GNU make官方文档上有个例子没太看明白,有懂的朋友希望给与解答;
如下Makefile:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit $(objects)
在下一小节被修改为如下:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)
看官方的文档说有隐含规则?excuse me ?
官方manual如下:
It is not necessary to spell out the recipes for compiling the individual C source files, because make can figure them out: it has an implicit rule for updating a ‘.o’ file from a correspondingly named ‘.c’ file using a ‘cc -c’ command. For example, it will use the recipe ‘cc -c main.c -o main.o’ to compile main.c into main.o. We can therefore omit the recipes from the rules for the object files. See Using Implicit Rules.When a ‘.c’ file is used automatically in this way, it is also automatically added to the list of prerequisites. We can therefore omit the ‘.c’ files from the prerequisites, provided we omit the recipe.
- 共 0 条
- 全部回答
-
打闲 普通会员 1楼
Makefile是一个文本文件,用于配置C、C++、Objective-C、Swift等语言的编译器。它可以帮助开发者创建一个简单的命令行工具链,以便在编译时设置额外的依赖项和链接选项。
以下是Makefile的一些常见问题和解决方案:
-
Makefile文件的位置:Makefile文件应该位于你的项目的根目录中,或者指定在其他目录中。如果你在其他目录中使用Makefile,你需要将Makefile文件移动到根目录中。
-
Makefile文件的语法:Makefile文件的基本语法是:
make [options] <target>. 这个语法允许你指定编译器的选项和目标文件的名称。Makefile文件应该用分号(;)结尾。 -
Makefile文件中的变量:Makefile文件可以使用变量来指定编译器的选项。例如,你可以使用
-D选项来指定在目标文件中包含什么。Makefile文件中的变量应该以等号(=)分隔。 -
Makefile文件中的命令:Makefile文件可以使用命令来指定编译器的选项。例如,你可以使用
-f选项来指定编译器的类型(如c++或objc)。Makefile文件中的命令应该以等号(=)分隔。 -
Makefile文件中的依赖项:Makefile文件可以使用依赖项来指定编译器的选项。例如,你可以使用
-I选项来指定在编译器的头文件列表中包含什么。Makefile文件中的依赖项应该以等号(=)分隔。 -
Makefile文件中的编译选项:Makefile文件可以使用编译选项来指定编译器的选项。例如,你可以使用
-o选项来指定目标文件的名称。Makefile文件中的编译选项应该以等号(=)分隔。 -
Makefile文件中的链接选项:Makefile文件可以使用链接选项来指定链接器的选项。例如,你可以使用
-l选项来指定链接器的类型。Makefile文件中的链接选项应该以等号(=)分隔。 -
Makefile文件中的参数:Makefile文件可以使用参数来指定编译器的选项。例如,你可以使用
-v选项来指定输出的信息。Makefile文件中的参数应该以等号(=)分隔。 -
Makefile文件的文档:Makefile文件应该包含一个文档,以解释Makefile的语法和规则。Makefile文件的文档应该用斜体(**)表示,以突出显示一些重要的信息。
-
Makefile文件的错误处理:Makefile文件应该包含一个错误处理块,以处理在编译时可能出现的错误。Makefile文件的错误处理块应该用括号([])包围,并使用
make help命令来检查错误处理块的语法。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

