【问题标题】:GNU Build Multiple Files at OnceGNU 一次构建多个文件
【发布时间】:2011-11-25 15:42:12
【问题描述】:

我需要使用 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怎么办?

【问题讨论】:

  • 这不是一个 make 问题,而是一个 GNU 构建工具问题。

标签: gnu gnu-make


【解决方案1】:

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

.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

【讨论】:

    【解决方案2】:

    使用make -j num同时编译num个文件。你可以省略num,让make同时编译尽可能多的文件。通常,如果您同时编译的文件多于系统中的 CPU/内核,它不会使事情变得更快。确保在使用它之前列出所有依赖项。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多