2012-02-06 7 views
12

cmakeを使用して次の問題が発生しました。私はhttp://tobias.rautenkranz.ch/cmake/doxygen/のUseDoxygenを使用して、私のライブラリのドキュメントを生成します。これはうまくいきますが、私は次のことを認識したいと思っています: 私が "make install"と呼ぶとき、私はDocumentationにビルドしてインストールしたいと思います。したがって、私はCMakeLists.txtにCMakeインストールターゲットにdepedencyを追加

install(DIRECTORY ${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR} DESTINATION share/doc/mylib/) 
add_dependencies(install doc) 

を追加します。 これは、エラーが発生:

CMake Error at CMakeModules/UseDoxygen.cmake:145 (add_dependencies): 
    add_dependencies Adding dependency to non-existent target: install 
Call Stack (most recent call first): 
    CMakeLists.txt:141 (include) 

は、このための簡単な回避策を取得することが可能ですか?ターゲットが接続されていない場合、 "make install"を呼び出すために "make doc"が手動で実行されない限り、インストール手順は何もインストールしません。私たちは、それがallターゲットでビルドするように、指定されたALLオプションでadd_custom_targetでそれを追加することによって、私たちのドキュメントをビルド

よろしく Grisu

+1

[この質問](http://stackoverflow.com/questions/8636479/postpone-making-custom-target-until-install/8643015#8643015)への回答を参照してください。 – sakra

答えて

6

インストールするには、installコマンドを使用します。 installターゲットに何も追加する必要はありません。

ドキュメントをallターゲットに追加する場合は、make installを実行するとドキュメントも作成されます。

+0

これは正常に動作します。追加のadd_dependenciesを使用して正しい順序(ビルド後のドキュメント)を達成しました。 –

+0

これは 'package'や' install'のような他の組み込みターゲットに対しても機能します。 –

2

コードドキュメントを生成する場合は、ビルドコマンドのあとでそのコマンドを実行することをお勧めしますか?このようにして、インストール時に利用できるようになります。

POST_BUILDでカスタムコマンドを追加し、そこにdoxygenコマンドを実行できます。参照先:http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:add_custom_command

1

ドキュメントは、すべての構成(Debug、Release、RelWithDebInfo、MinSizeRel)で重複して構築されるため、add_custom_target(ALL ...)によるドキュメントのビルドは理想的なソリューションではありません。

ビルド設定に関係なく一度ドキュメントを作成してから、install()コマンドのCONFIGURATIONSオプションを使用して、リリースとRelWithDebInfoのコンフィグレーション用にのみインストールしてください。 install()はドキュメンテーションのターゲットに依存するはずですが、私が言ったように、1つの設定に対してのみビルドします。これらの要件を満たすドキュメントにinstall()からの依存関係を追加する方法はありません。

関連する問題