GNU一次构建多个文件

时间:2011-11-25 15:42:12

标签: gnu gnu-make

我需要使用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 <aotp@zxcv.com>],

[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该怎么办?

3 个答案:

答案 0 :(得分:0)

使用make -j num同时编译 num 文件。您可以省略num并让make尽可能多地编译文件。通常,如果您同时编译的文件数量超过系统中的CPU /核心数,则不会使速度更快。在使用之前确保列出了所有依赖项。

答案 1 :(得分:0)

即使使用automake,它也只为您生成Makefile。您最终使用普通make命令。

运行-j时添加命令行选项make。它将指示它并行运行尽可能多的构建命令。您还可以使用-j 4自行指定最大并发构建数。 (通常好的值是nbrProcessors + 1)

答案 2 :(得分:0)

如果你想在GNU make中默认构建多个目标,你会生成一个“虚假”目标,一个取决于你的两个结果的虚拟目标,例如:

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

如果您运行hellohello2,这将构建makemake both

Reference

对于automake,您只需要定义两个程序:

bin_PROGRAMS = hello hello2

hello_SOURCES = hello.c
hello2_SOURCES = hello2.c