シェルスクリプトの他のMakefileから変数を取得する方法

シェルスクリプトの他のMakefileから変数を取得する方法

~/kernelbuild/linux-3.14.37私のシェルスクリプトでこのディレクトリにある他のMakefileの変数を使用したいと思います。

必要な変数は次のとおりです。

VERSION = 3
PATCHLEVEL = 14
SUBLEVEL = 37

問題は、Makefileを変更できないことです。したがって、変数のエクスポートはここではオプションではありません。

また、必要なすべての共通変数を含む別々のファイルを持つことについて話している人もいます。これはうまくいきますが、すべてを単一のシェルスクリプトに入れる必要があります。

. ~/kernelbuild/linux-3.14.37/Makefileこれらの変数を使用できる必要があると思うシェルスクリプトに含めようとしていますが、次のエラーが発生します。

/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 1: VERSION: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 2: PATCHLEVEL: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 3: SUBLEVEL: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 4: EXTRAVERSION: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 5: NAME: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 17: MAKEFLAGS: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 20: unexport: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 26: unexport: command not found
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 47: syntax error near unexpected token `"$(origin V)",'
/home/jl4347/kernelbuild/linux-3.14.37/Makefile: line 47: `ifeq ("$(origin V)", "command line")'

Makefileがシェルスクリプトの構文規則に従わないためだと思います。どうすればいいですか?

よろしくお願いします!

ベストアンサー1

簡単なもの(例)が必要な場合は、grepMakefileから取り出します。

より複雑なケースのために、GNU Makeには-pMakeを実行した後にすべての変数定義(およびそれ以上)を含むデータベースを印刷するオプションがあります。これを一緒に使用することができます。-nこれにより、ジョブは実際には実行されません(したがって何も構築されません)。出力grepから変数を取得できます。-p

おすすめ記事