2016-07-14 12 views
3

CMakeのが組み込まれていinstallターゲット、あなたがのMakefileを生成している場合make installを使用、またはVisual StudioでINSTALLプロジェクトをビルドすることができるように、など組み込みINSTALLターゲットにはどのような依存関係がありますか?

このターゲットの行動は様々なinstall()コマンドによって定義されますあなたのCMakeファイルで、例えば既存のCMakeターゲットのファイルまたは製品を特定のインストールディレクトリにコピーします。

install()コマンドでもto specify a componentを使用できます。コンポーネントを指定してCMakeを呼び出すと、installターゲットには製品のみがインストールされます。

私は見つけられませんでした:installターゲットはどのターゲットに依存していますか?私の目標の一つは、コンパイルされない場合

  • 、この原因make installはそのターゲットは、インストールのために何を生産していない場合でも、失敗するでしょうか?
  • オリジナルのCMakeコールで特定のコンポーネントをビルドする場合、make installビルドすべてターゲットはソースツリーにありますが(ただし、1つのコンポーネントのみをインストールします)?または、特定のコンポーネントのインストールに必要なターゲットだけを構築しますか?
無条件

答えて

2

これはallに依存します。

あなたはEXCLUDE_FROM_ALLを使用して、この中で何を制御、またはCMAKE_SKIP_INSTALL_ALL_DEPENDENCYを設定することで、依存関係を削除し、それはそれだけで何かを構築しようとせずにインストールを行いますmake installを意味し、具体的な目標と、それに代わるものではありませんすることができます。

ここではデフォルトでCMAKE_SKIP_INSTALL_ALL_DEPENDENCY

からドキュメントだ、installターゲットはallターゲットに依存します。これは、make installが呼び出されるかINSTALLがビルドされると、最初にallターゲットが構築され、その後インストールが開始されるという効果があります。 CMAKE_SKIP_INSTALL_ALL_DEPENDENCYTRUEに設定されている場合、この依存関係は作成されないため、プロジェクトが完全に構築されたかどうかに関係なく、インストール処理がすぐに開始されます。

0

make installmake allから依存しています。

つまり、単一のファイルをインストールする場合は、make allステージを(正常に)完了する必要があります。

+0

これはどこに文書化されていますか?私はCMakeを単一のコンポーネントで呼び出すときにもこれが当てはまると思いますか? – Ziv

+0

これはどこに文書化されていますか? - それは...しかし、私は場所を見つけることができません。 '私はCMakeを単一のコンポーネントで呼び出すときにもこれが当てはまると仮定します? ' - はい、単一のコンポーネントをインストールするだけでも、プロジェクト全体を構築する必要があります(' make all')。 – Tsyvarev

関連する問題