依存関係のチェック-不正なメイクファイルでプロジェクトをクリーンアップする方法

StackOverflow https://stackoverflow.com/questions/240061

質問

私は非常に大規模なCプロジェクトを持っており、多数の個別のCファイルとヘッダー、および多数の貢献者がいます。多くの貢献者は、メイクファイルと依存関係に関する強力な知識を持っていないため、ほとんど常に<!> quot; make clean <!> quot;をしなければならないという珍しい問題はありません。 <!> quot; make <!> quot;を信頼する前に正しい出力を生成しました。

makeに数分かかったとしても、これは問題にはなりませんが、高速マシンでは2時間近くかかります。コードは最終的にビルドを中断します。新しいベースラインがカットされる前に、なぜこれらがビルドマネージャによってキャッチされないのかを聞かないでください...

はい、ここまで行かせてはいけません。

はい、開発者を教育しています。

いつものように、すべてを停止して手動で修正する時間はありません。

これらのラインに沿ってツールがあると考えています:

  • CおよびHファイルから既存のプロジェクトの正しい依存関係情報を構築するための自動化ツールはありますか?
  • メイクファイルに従って依存関係情報を記述する自動化ツールはありますか?
  • 上記の2つの依存関係ツリーの違いを説明するツールの聖杯はありますか?

しかし、この問題を解決するために他にできる/すべきことは何ですか?

事前に感謝します...

-アダム

役に立ちましたか?

解決

Makeから依存関係を自動的に検出するツールに切り替えるのが最も簡単な場合があります。たとえば、 SCons は依存関係をリストしませんが、代わりにコンパイルされるファイルを自動的に解析し、インクルードを探します。 。どのファイルをコンパイルし、どのファイルをどの実行可能ファイルに入れるかを指定するだけです。開発者が実際にエキスパートを作成していないという事実のために、ビルドシステムの切り替えは簡単になります。

Makeを使用する場合の別の方法は、gcc -Mオプションを使用して依存関係を自動的に検出することです。 C依存関係の自動検出の質問への回答には、メイクファイルを自動的に検出する方法の例があります依存関係を手動で指定する必要がないように。

他のヒント

職場にも同じ問題があります。トランクは、マージまたはチェックイン後に常に壊れていました。

継続的インテグレーションビルドマシンをセットアップし、約45分でクリーンアップを行います開発マシンでの約2時間と比較して、統合サーバーは2時間ごとにSVNリポジトリをポーリングして新しいチェックインを行い、make cleanを開始します。

そのようにして、ビルドがいつ壊れたかを正確に監視し、すぐに修正できます。 Hudson を継続的インテグレーションサーバー、無料のオープンソース、芸術作品、非常に簡単なものとして使用します。設定する。さらに、ユーザーインターフェイスは非常に直感的であり、他のすべての開発者はそれを気に入っています。

乾杯、

これを解決する標準的な方法は、コンパイラに依存情報を自動的に生成させることです。このようなもの(gccを想定し、同様のオプションについてはコンパイラーを確認する必要があります)

SOURCES=foo.c bar.c

%.d: %.c
    $(CC) $(CFLAGS) -MM $< >$@ 

include $(SOURCES:.c=.d)

GNU Makeマニュアルには、前提条件の自動生成

編集:通常、この種の問題がある場合は、 CMake の使用を開始することをお勧めします。

>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top