2011-02-07 2 views
4

私はCMakeをビルドシステムとして使用するC++ソフトウェアプロジェクトに取り組んでいます。このソフトウェアはMac OS/X、Linux、Windows上に構築されています。ファイルの変更に関するCMakeベースのソフトウェアプロジェクトを再コンパイルするソフトウェアはありますか?

通常のハック/コンパイル/テストのサイクルを改善するために、CMakeプロジェクトで考えられるすべてのソースファイルを認識しているデーモンのようなソフトウェアがあるかどうか疑問に思っていました。ソースファイルのいずれかが変更されると、デーモンはこれに気付き、影響を受けるターゲットを再構築します。私のサイクルの「コンパイル」ステップは、あなたのフレンドリーネイバーホールド構築デーモンが既にすべてのファイルを再構築してから、「何もしない」とすぐに戻ることができるため、速くなります。

これを行うことができる既存のソフトウェアを知っている人はいますか?もしそうでなければ - 何らかの形でCMakeが考えているソースファイルのリストをエクスポートすることができるので、それらのファイルを監視してmake(または選択したジェネレータには適切なもの)を再実行する小さなデーモンを自分で書くことができますか?最良のケースでは、依存関係ツリーを取得して、すべての依存関係を何度もチェックすることをスキップして、必要なターゲットを更新することもできます。

答えて

2

私はJNotifyを使用して、ファイルの変更をうまく監視しています。

これはあなたが言及したすべてのオペレーティングシステムで動作し、ファイルの変更の検出はほとんど瞬時に行われます。ファイルの作成、削除、変更などを検出できます。

コードサンプルはhereです。

class CMakeListener implements JNotifyListener { 
    public void fileModified(int wd, String rootPath, String name) { 
     // if a file is a cpp or hpp file, execute CMake 
    } 
} 

をして、CMakeのタスクがうまく自動化する必要があります。

あなたはこのような何かを行うことができます。

+0

ありがとう、これは興味深いです。しかし、最初に修正するファイルを調べる必要があります.CMakeがこのリストを印刷する方法はありますか? –

+0

@Frerich:これはあなたの心配ではありません。 CMakeは、何が起こったのかを検出し、適切に行動するのに十分なほどスマートでなければなりません。変更が発生したときにCMakeを呼び出すことはあなたの仕事です。 – darioo

+0

申し訳ありませんが、私はタイプミスを犯しました。私の質問は次のようなものでした。 JNotify?私は、CMakeが「ソース」とみなすファイルを知りたいと思います。 –

関連する問題