我正在尝试编译各种静态库:
foo.c
foo.h
我的makefile看起来像:
foo.o: foo.c
cc -c foo.c
libfoo.a: foo.o
ar -rv libfoo.a foo.o
它编译.c文件并提供.o文件,但是,我没有.a文件。虽然,我可以依次运行确切的命令并获取.a文件。
我确定这很简单,我搞砸了。我已经看了很多遍,但是这些示例并没有真正帮助,因为它们比我的情况复杂得多。
仅在没有参数的情况下调用make
会默认使用第一个目标,即foo.o
。由于这不依赖于libfoo.a(当然也要为什么要依赖它),因此永远不会触发第二个配方。结果是一个.o文件,但没有.a文件。
来自https://www.gnu.org/software/make/manual/html_node/Goals.html
默认情况下,目标是makefile中的first目标