12

メイクファイルで変数をあるレベルから次のレベルに渡すためのヘルプを探しています。さまざまなターゲット アーキテクチャで実行するためにビルドする必要があるソース ツリーがあります。より高いレベルのメイクファイルをきれいに保つために、アーキテクチャ固有の情報を含む個別のメイクファイルを作成し、include ディレクティブを使用して必要なものだけを含めました:)

メイクファイルの後半で、ソース ファイルをビルドするために別のディレクトリに転送します。ビルドが失敗し、アーキテクチャ固有の変数が渡されていないことが原因であることがわかりました。

ifeq ($(ARCH), my_arch)        |
include build/my_archdefs.mk   |  section 1 
endif                          |

<more commands>
debug:
      $(MAKE) -C src debug

コード ツリーを構築するための makefile は、src ディレクトリにあります。応急処置として、上記のセクション 1 を下位レベルの makefile に含めました。この場合、変数 ARCH が継承されていないことに気付きました。

関連していると思われるいくつかのリンクを以下に示しますが、これを機能させるために何をする必要があるかわかりません。 http://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html#Options_002fRecursion http://www.gnu.org/software/make/manual/html_node/Include.html

必要な情報は上で参照したリンクに潜んでいるように思えますが、表示されていません。どんなポインタでも大歓迎です。

ありがとう。

4

2 に答える 2

14

このリンクが役立ちます: http://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html#Variables_002fRecursion

最上位の Makefile に次の行exportを追加するだけで、すべての変数がサブメイクにエクスポートされます。

例:

ファイルMakefile:

ID=asdf
export
all:
    @echo ${ID}
    @make -f Makefile2

ファイルMakefile2:

all:
    @echo ${ID}

出力:

$ make
asdf
make[1]: Entering directory `/home/user/Desktop/a'
asdf
make[1]: Leaving directory `/home/user/Desktop/a'
于 2012-10-02T19:56:00.677 に答える