2011-10-27 29 views
3

質問CMAKE自動ヘッダファイルの依存関係

main.hの内容は

私はサンプルプログラムのディレクトリのmain.cのmain.hとCMakeLists.txtを持っている

Handling header files dependencies with cmake

この質問に似て

#ifndef MAIN_H 
#define MAIN_H 
int t=3; 
int y=2; 
#endif 

main.cの内容は

#include <main.h> 
#include<stdio.h> 
int main(){ 

    printf("%d apple",t); 
} 
です

とCMakeLists.txt

PROJECT(test) 
AUX_SOURCE_DIRECTORY(. test_SRCS) 
include_directories(.) 
ADD_EXECUTABLE (main ${test_SRCS}) 

が、cmakeのは、ヘッダファイルの変更についてのmain.cを再構築されていません。 ヘッダファイルの依存関係を自動生成します。 cmakeを使用することは可能ですか?

もしそうでない場合は、それを行うための他のツールがありますか? AUX_SOURCE_DIRECTORYのcmakeの2.8.0文書から

+0

この例では依存関係管理がうまくいきます(LinuxではGCCとCMake 2.8.0を使用しています)。 – antonakos

+0

@antonakos main.hヘッダファイルの変更時にプロジェクトを再コンパイルしていますか? –

+0

@antonakos最低限のバージョンを2.8として指定すると、あなたのコメントを回答として記入できますか? –

答えて

3

私のコメントで述べたように、私はあなたの例を試してみて、うまくいきました。main.hが変更された場合、main.cが再コンパイルされます。 CMakeの(バージョン2.8.0)の

私のインストールがCMakeLists.txtファイルに

cmake_minimum_required(VERSION 2.8) 

を追加するために私に言ったが、それは私が必要なすべての調整です。

-1

ライブラリや実行対象のソース ファイルのリストを書くことを避けるために、このコマンドを使用することは魅力的です。 これはうまくいくようですが、 新しいソースファイル が追加されたことを知っているビルドシステムをCMakeが生成する方法はありません。通常、生成されたビルドシステム は、新しいソースを追加するためにCMakeLists.txtファイルが に変更されているため、CMakeをいつ再起動する必要があるかを認識しています。このファイルを変更せずにソースを ディレクトリに追加するだけで、手動で CMakeを再実行して、新しいファイルを組み込んだビルドシステムを生成する必要があります。

なぜファイルのリストを作成したくないのですか?そのようなリストは、一般的に頻繁に変化しない。

+0

申し訳ありませんが、あなたの答えは範囲外です。私の質問は、ヘッダーファイルの変更に関するプロジェクトの再構築ではないということです。 –

+0

@VivekGoel - クラップ、そうです。私はファイルの変更にも同様にそれを誤解していました。私の間違いを指摘してくれてありがとう。 – Mark

0

Google検索...

が、私は私のプロジェクトの一つで、この問題に遭遇した他の人のためにこれを答えます。私は、cmakeを実行した後、ヘッダをcppファイルに追加しました。再実行cmakeは、問題を修正しました。あなたがこれにぶつかったら、それを試して、それが問題を解決するかどうかを見てください。

関連する問題