我需要使用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.c
和hello2.c
该怎么办?
答案 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
如果您运行hello
或hello2
,这将构建make
和make both
。
对于automake,您只需要定义两个程序:
bin_PROGRAMS = hello hello2
hello_SOURCES = hello.c
hello2_SOURCES = hello2.c