我在掌握Makefile的概念时遇到了一些麻烦。我正在用C编写一个项目,我有两个.c文件,需要一起编译才能运行该程序。我和其他人一起讨论了一些概念,但是仍然难以掌握Makefile的概念。这就是我所拥有的。
生成文件:
hs.c:
gcc -o hs hs_util.c hs.c
hs.c依赖于hs_util.c的功能来完成任务。我知道这是因为包含了hs_util的头文件...
在hs.c中:
#include "hs_util.h"
#include "hs_config.h"
在hs_util.c中
#include "hs_config.h"
#include "hs_util.h"
当我运行“ make”命令时,它说“ make:'hs.c'是最新的。” 很好,但是没有创建hs文件。我究竟做错了什么?
你告诉它来构建hs.c
没有hs
。因此它尝试了,但是它存在,并且您没有告诉它其他任何文件来迫使它认为该文件已过时(这很好,因为您不希望这样)。
你要:
hs:
gcc -o hs hs_util.c hs.c
但这还不够。那将只构建一次,然后停止(您需要先删除,hs
然后才能再次构建)。
您需要教授make哪些输入文件可以进入目标(hs
)。
hs: hs_util.c hs.c
gcc -o hs hs_util.c hs.c
完成后,您可以使用自动变量来避免重复。
hs: hs_util.c hs.c
gcc -o $@ $^
完成此操作后,您便可以真正利用make内置规则了。
hs: hs_util.o hs.o
如果您还想告诉make它需要.o
在.h
文件更改时重建文件,则可以添加它。
hs.o hs_util.o: hs_util.h hs_config.h
output-file: input-file
commands to generate output-file from input-file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句