我应该使用automake / autoconf来分发小型ansi C应用程序吗?

时间:2009-10-28 09:04:53

标签: c portability autoconf automake

我有一个小型ANSI C应用程序,可以在不同的测试编译器和平台下进行干净编译。它不使用任何预处理器开关或外部依赖项,而makefile就像:

myapp: *.c
    gcc *.c -Wall -o myapp

如果我想以源代码形式发布这个项目尽可能便携,我应该使用automake / autoconf进行包装吗?这实际上是否会提高可移植性,还是可以实现便携性?

我唯一能想到的是它会自动选择系统编译器,但它也会增加很多复杂性。值得吗?

3 个答案:

答案 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)

虽然您可能觉得自己在功能方面的收益很少,但您可能仍会因为以下原因而考虑它:

  • 使用autoconf是一种非常分发C代码的常用方法。因此,大多数人应该习惯使用它进行构建和安装,这使用户更容易。
  • 一旦你努力使autoconf与你的项目一起工作,当你想要利用它的一些附加功能时,它将使它变得更加容易。