2011-11-25 86 views
1

我需要使用GNU构建系统来一次编译多个文件。到目前为止,我只看到了如何一次编译一个文件的例子。这是我最喜欢的参考:GNU一次构建多个文件

http://www.scs.stanford.edu/~reddy/links/gnu/tutorial.pdf

它说:

“Makefile.am”

bin_PROGRAMS = hello 

hello_SOURCES = hello.c 

“configure.ac”

AC_INIT([Hello Program],[1.0], 

[Author Of The Program <[email protected]>], 

[hello]) 

AC_CONFIG_AUX_DIR(config) 

AM_INIT_AUTOMAKE([dist-bzip2]) 

AC_PROG_CC 

AC_PROG_INSTALL 

AC_CONFIG_FILES([Makefile]) 

AC_OUTPUT 

但是,如果我想同时制作hello.chello2.c,该怎么办?

+1

这不是简单的修修补补的问题正是,但GNU编译工具的问题。 – dmckee

回答

0

使用make -j num编译num文件在同一时间。您可以省略num,并尽可能多地编译尽可能多的文件。通常,如果您编译的文件数多于系统中的CPU /内核数量,那么它不会让速度更快。确保在使用前列出所有依赖关系。

0

即使使用automake,它也只会为您生成Makefile。您最终会使用简单的make命令。

运行时添加命令行选项-jmake。它会指示它运行尽可能多的构建命令,因为它可以并行执行。您还可以使用-j 4指定最大并发版本数。 (通常的理想值是nbrProcessors + 1)

0

如果你想用默认的GNU编译多个目标让你生成一个“假”的目标,这取决于双方的结果的虚拟目标,如:

.PHONY: both 
both: hello hello2 
hello: hello.o 
hello2: hello2.o 
hello2.o: hello2.c 

如果您运行makemake both,将生成hellohello2

Reference

对于automake的,你只需要定义两个方案:

bin_PROGRAMS = hello hello2 

hello_SOURCES = hello.c 
hello2_SOURCES = hello2.c