2

次のGNUmakeターゲットがあるとします。

    create_dir: 
        @mkdir objects

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

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

.asmまたは.cファイルからオブジェクトファイルを作成するための一般的なルールがあります。これらを次のように1つのターゲットに結合したいと思います...

all: create_dir build_asm build_c
    @echo build complete

...そして、パフォーマンスを向上させるために、複数のジョブを使用するジョブを使用してこのターゲットを構築したいと思います。*.cファイルと*.sファイルは、build_cによって作成されたディレクトリに配置する必要があるため、makeでそれらを任意の順序で実行できるようにするのは問題があります。

ターゲットを分割せずにbuild_cbuild_asmを解決する前に、makeに偽のターゲットcreate_dirを強制的に解決させる方法はありますか?

4

1 に答える 1

3

オブジェクトディレクトリの作成は、「order-only-prerequisites」の一般的な使用例です(GNU makeマニュアルの「TypesofPrerequisites」を参照)

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 に答える