我有一个小型ANSI C应用程序,可以在不同的测试编译器和平台下进行干净编译。它不使用任何预处理器开关或外部依赖项,而makefile就像:
myapp: *.c
gcc *.c -Wall -o myapp
如果我想以源代码形式发布这个项目尽可能便携,我应该使用automake / autoconf进行包装吗?这实际上是否会提高可移植性,还是可以实现便携性?
我唯一能想到的是它会自动选择系统编译器,但它也会增加很多复杂性。值得吗?
答案 0 :(得分:4)
我怀疑这是值得的。在具有可用C编译器的每个平台上都应支持没有任何特定于OS的调用的ANSI C,并且向此添加automake / autoconf会使维护工作变得不那么令人愉快。
但是,您可以使用makefile中的$(CC)
变量自动使用系统的编译器:
myapp: *.c
$(CC) *.c $(CFLAGS) -o myapp
答案 1 :(得分:4)
您不需要指定编译规则,因此$(CC)
,$(CFLAGS)
和$(LDFLAGS)
不需要,因为make
有一个隐含的规则要做来自C源的可执行文件。
保持Makefile
简单:
all: myapp
myapp: *.c
clean:
rm -f myapp
.PHONY: all clean
顺便说一句,最好指定源文件列表,因为无法保证您的源代码将是该目录中唯一的C文件
答案 2 :(得分:0)
虽然您可能觉得自己在功能方面的收益很少,但您可能仍会因为以下原因而考虑它: