2

假设我有以下 GNU make 目标:

    create_dir: 
        @mkdir objects

    build_asm: $(ASM_FILES)
        @echo building assembly files...

    build_c: $(C_FILES)
        @echo building c files...

我有一个从 .asm 或 .c 文件创建目标文件的通用规则。我想将这些组合成一个目标,如下所示......

all: create_dir build_asm build_c
    @echo build complete

...并且我想使用使用多个作业的作业来构建此目标以提高性能。*.c 和 *.s 文件应该放在build_c创建的目录中,因此允许 make 以任何顺序执行它们是有问题的。

有没有办法强制 make在解析build_cbuild_asm之前解析假目标create_dir而不会破坏目标?

4

1 回答 1

3

创建对象目录是“order-only-prerequisites”的典型用例(参见GNU make 手册中的先决条件类型):

create_dir: 
    @mkdir objects

build_asm: $(ASM_FILES) | create_dir
    @echo building assembly files...

build_c: $(C_FILES) | create_dir
    @echo building c files...

all: build_asm build_c
    @echo build complete
于 2012-09-21T05:55:08.963 回答