C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了GNU make和对象列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有大约10个带头文件(.h)的源文件(.C).
只有两个源文件(.C)链接到可执行文件(ELF)并包含main函数.大多数文件被编译为对象(.o)和(重新)与可执行文件一起使用(静态链接).

我试图定义@L_801_10@通用规则来构建所有对象:

%.o : %.c
    $(CC) $(CCFLAGS) -c -o $@ $<

这对于编译为对象的源非常有用.每次添加新的源文件时,我都不必担心更新make文件.

但我不知道创建可执行文件规则的最佳方法是什么?

exec1 : object1.o object2.o object3.o
    call the linker
exec2 : object1.o object2.o object4.o object5.o
    call the linker

这将有效;但是,每当我要包含@L_801_10@新的头文件(foo.h)时,我还需要记住更新这个规则的对象列表(添加foo.o).

有没有什么方法可以自动解决给定目标所需的对象(可能基于包含的头文件?)?

有没有更好的方法来定义可执行文件的目标?

请注意我不能使用通配符,因为并非所有可执行文件都需要所有对象.或链接器可以删除多余的对象?

谢谢!

解决方法

您可以使用通配功能自动执行文件列表维护

sources := $(patsubst %.c,%.o,$(wildcard *.C))

你还应该制作@L_801_10@头文件列表

headers := $(wildcard *.h)

并将它们添加到编译规则中

%.o : %.c $(headers)

GNU Make手册(https://www.gnu.org/software/make/manual/make.html)有更多信息,包括可能的陷阱.

大佬总结

以上是大佬教程为你收集整理的GNU make和对象列表全部内容,希望文章能够帮你解决GNU make和对象列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。