2016-06-22 4 views
0

CMakeファイルで構成、構築、インストールを行うソフトウェアを作成しました。このソフトウェアは、ユニットテストと機能テストに基づいた継続的な統合プロセスで開発されています。私は、これらのテストに対応するターゲットがインストール手順中に構築されていることに気付きました。それはまったく必要ではなく、CMakeがそれをやり遂げるのを防ぐ方法を理解したいと思います。CMakeでソフトウェアをインストールするときの偽のターゲット

make install 

を入力した後、私は次の出力を取得:

[7%]

ARPACK組み込みターゲット[15%]内蔵目標ブーストを

[23 %]ターゲット固有値を構築

[31%]内蔵標的yamlcpp

[34%]内蔵目標simolコア

[36%]内蔵目標simol-quantchem

[80%]内蔵目標simol-statphys

[88%]内蔵目標GTEST

[91%]

をsimol_test_unit組み込みターゲット[92%]内蔵標的simol_test_functional

[93%]内蔵目標test_bichainfpu

[94%]内蔵標的test_dpde

[95%]内蔵ターゲット97 [

test_galerkin

[96%]内蔵ターゲットをtest_fluid %]ビルドターゲットtest_hamiltonian

[98%]ビルドターゲットtest_langevin

[99%]組み込みターゲットtest_rotor

[100%]組み込みターゲット100%に88%から

の手順は、私がどのテストが、ソフトウェアのコアのみをインストールしていないので、決定的スプリアスですtest_trichainとそのモジュール。例えば、simol-statphysをインストールCMakeのコマンド(80%)

INSTALL(TARGETS simol-statphys ARCHIVE DESTINATION lib) 

あるIはsimolコア(34%)とsimol-quantchem(36%)のための同様のコマンドを持っています。ソフトウェアのモジュールがこれらの外部ライブラリに依存するため、なぜ以前のターゲットが構築されているのか理解できます(arpack、boost、eigen、yamlcpp)。しかし、彼らはテストに依存しません。その逆は真です:明らかにテストはモジュールに依存します。しかし、なぜ彼らがインストール手順に関与すべきか私には意味がありません。もちろん、テストのためのINSTALLコマンドの呼び出しはありません。これらのテストは次のように定義されています:

ADD_EXECUTABLE(test_galerkin ${CMAKE_SOURCE_DIR}/test/functional/statphys/galerkin/TestGalerkin.cpp) 
TARGET_LINK_LIBRARIES(test_galerkin simol-statphys) 

ここで何が起こっているのか分かりませんか?

答えて

1

CMakeの目標とその建て counterpairsをインストールし、依存関係を追跡することはありません。代わりに、全体(疑似)ターゲットはからすべてに依存してインストールされます。

make allの間に作成されたものは、make installにも組み込まれています。

make installでテストを作成しない場合は、make allから除外します。これを実行する最も簡単な方法は、add_executable()呼び出しでオプションEXCLUDE_FROM_ALLを使用している:

ADD_EXECUTABLE(test_galerkin EXCLUDE_FROM_ALL ...) 
+0

ありがとうございました! :) – Aleph

関連する問題