web-dev-qa-db-ja.com

ビルドスクリプト:「以前に完了したステップをスキップ」を実装する方法

GCCのビルドスクリプトを作成しようとしていますが(今のところ機能します)、たとえばGCC/binutilsのみを更新する場合は、すべての前提条件ライブラリの再構築をスキップできるようにしたいと思います。スキップするすべての手順を含むファイルをメインビルドディレクトリにスクリプトで作成することを考えました。どうすればよいですか(catコマンドを使用して、ファイルにステップがあるかどうかを確認します)。これにより、手動ではありますが、必要に応じて特定のパーツを再構築できるようになります。

更新:投稿された回答は、メイクファイルが必要であると想定しているようですが、それは非常に面倒で、必要ありません。ビルド手順は、メイクファイルに入れたくない多くのcd、configure、make、makeインストールステップで構成されています。スクリプトはほぼ完成しています。これが私が必要とする最後のステップです...

UPDATE2:以下のコメントで述べたように、私はWindowsを使用しており、シェルとしてMSYSbashを使用しています。

ありがとう!

PS:この「完了したステップをスキップする」は、スクリプトを実行するたびに実行する必要があります。

1
rubenvb

つまり、ビルドフレームワークに関する質問ではなく、テキストファイルに特定の行が存在するかどうかを判断する方法について具体的な質問をしているように見えますか?

文字列fooがファイルに存在するかどうかを確認する場合は、次のようにします。

if grep -q foo thefile; then
   # it's there
else
   # otherwise
fi

トリックを行う必要があります。

2
Eric Smith

GNUの友人たちが制作したmakeの紹介が必要なようです。

Makeは、多数の中間ファイルを調べて、どのファイルを再コンパイルする必要があるかを判断できます。そして、それらのうちのどれに基づいて、サポートファイルを再構築して再帰的にする必要があるのか​​を把握します。

Makefileを作成して事前に設定する必要がありますが、これはあなたが喜んで行うように思えます。

詳細については、次のURLを確認してください: http://www.gnu.org/software/make/ 。実際、箇条書きの2は、私ができることよりも、それを説明するのに優れているように思えます。

4
Kevin M

CMake を調べてみてください。あなたが説明したことについては、それはおそらくやり過ぎであり、makeの方が適していますが、 autotools のものに取り掛かると、それはあなたの人生を作る可能性がありますはるかに簡単です。

0
Hank Gay