如何影响目标的顺序,为Makefile.am添加其他步骤等?

时间:2010-12-16 21:10:35

标签: makefile autotools automake

我可以管理Makefile.am,因为我习惯于管理Makefile吗?

通常我会创建相互调用的目标,以便构建项目。

但是在Makefile.am中我有一些神秘的libqqq_la_SOURCES = ...,我不知道它到底在做什么。

在哪里编写应该为给定源使用的编译器?在哪里添加“从qqq.vala生成qqq.c”的步骤?

如何将Makefile.am编写为Makefile?

2 个答案:

答案 0 :(得分:3)

1.11中的Automake确实有Vala支持。

configure.ac:

AM_PROG_VALAC

Makefile.am:

AM_VALAFLAGS = whateverelse
whatever_SOURCES = xxx.vala

答案 1 :(得分:0)

Automake会自动将您在Makefile.am中指定的任何Make目标复制到生成的Makefile中。因此,您只需将其包含在.am文件中即可生成任何自定义的复杂内容。

但是,你不应该为所有做这件事 - 这会破坏Automake试图为你提供的好处。指定

bin_PROGRAMS=foo
AM_CFLAGS=$(DEPS_CFLAGS)
foo_SOURCES=file1.cpp file2.cpp
foo_LDADD=$(DEPS_LIBS)

无论如何都会生成一个标准的Make目标。我建议您学习使用Automake宏来处理大多数标准事物 - 它会更加便携。

学习丰富多样的Autotools功能的最佳方法是不要阅读手册 - 它太复杂和无组织。我的建议只是将现有的开源GNU项目与构建样式(依赖项,平台等)相似,并检查其Autoconf和Automake文件。已建立的项目已经学到了很多可以学习的技巧。