1. ホーム
  2. c

[解決済み] 1つのmakefileから複数のターゲットをビルドする方法

2022-02-04 04:01:49

質問

Makefileのターゲットをパラメータ化しようとしています。現在、このファイルには

TARGET = main

という宣言があります。この宣言は SRC のリストを作成したり、他のさまざまなことを行います。

しかし、私はCコードを変更し、複数の異なるトップレベル.cファイルを持って、基本的にバリアントビルドを取得するようにしました。そこで、私ができるようにしたいことは、基本的に次のようなことです。

make target1

または

make target2

そして、何を変化させるか TARGET がmakefileに設定されています。これをどう実現すればいいのか、戸惑っています。私は次のようなものを追加するかもしれないと思った

target1: all
    TARGET=target1

しかし、これは全くと言っていいほどうまくいかなかったようです。どうすればいいのか、一般的なパターンがあるのでしょうか?

どのように解決するのですか?

パラメータ化された変数名とターゲット固有の変数は、ターゲット固有の変数の値は通常そのターゲットの prereqs によって "inherited" されるので、あなたが望むことを行うかもしれません (GNU make を使用していると仮定しています)。

target1_SRC=123 456
target2_SRC=abc def

target1: TARGET=target1
target2: TARGET=target2

target1: all
target2: all

all: ; @echo $($(TARGET)_SRC)

そして make target1 または make target2 といった具合に。

$ make target1
123 456
$ make target2
abc def