2011-06-06 20 views
5

cmakeのmake cleanが外部依存関係を再構築するのを防ぐいくつかの方法があるのだろうかと思っていました。私はExternalProjectを使用してサードパーティのC++ライブラリを構築していますが、make cleanを実行しても再構築する必要はありません。cmake - クリーニングから `make clean`を防ぐExternalProject

一方、依存関係をクリアする新しいルール、たとえばmake really-cleanを作成することもできます。これを行うには良い方法がありますか?

ありがとうございました。

答えて

4

私はあなたが依存ファイルを作成するために、ADD_CUSTOM_COMMAND、ADD_LIBRARY、または他のADD_ *を使用すると仮定します。あなたのExternalProjectは、それ自身のディレクトリがあり、そのディレクトリにCMakeLists.txtを置くことができるならば、あなたは、簡単にそのCMakeLists.txtに次

を置くことができます。

SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1) 

だから、それらの依存ファイルが洗浄されません。

そうでない場合は、出力ファイルとして外部依存関係を避ける必要があります。 あなたが

ADD_CUSTOM_COMMAND(OUTPUT libdep 
    COMMAND dep_gen_cmd 
    .... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    .... 
    DEPENDS libdep 
) 

を使用している場合たとえば、あなたはそれを変更する必要があります。

ADD_CUSTOM_TARGET(libdep_gen 
     COMMAND dep_gen_cmd 
     ... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    COMMAND test -e libdep || make libdep_gen 
    ... 
) 
関連する問題