2012-02-08 3 views

答えて

33

あなたはなどの部品、例えば「ドキュメント」にグループのインストール先を、「LIBS」、「ランタイム」、

add_library(libone libone.c) 
add_executable(one main1.c) 
install(TARGETS libone one DESTINATION /somedir COMPONENT comp_one) 

add_library(libtwo libtwo.c) 
add_executable(two main2.c) 
install(TARGETS libtwo two DESTINATION /somedir COMPONENT comp_two) 

は、これが唯一のliboneライブラリと1つの実行可能ファイルをインストールするためにcmake -DCOMPONENT=comp_one -P {your_build_dir}/cmake_install.cmakeを実行することが可能になることができます。 make installを発行すると、すべてのコンポーネントがインストールされます。

+0

感謝をインストールしインストールします。コンポーネントはターゲットと一緒に1つのファイルにインストールされるか、別のファイルを持つ同じディレクトリにインストールされますか?私の意見では、私はこのように異なるターゲットをインストールすることができます:インストール(ターゲットmyExe mySharedLib myStaticLib ランタイムDESTINATIONビン ライブラリDESTINATION lib アーカイブDESTINATION lib /静的)。それは良いです – Samuel

+0

それは目的地のdirsについてではなく、インストールをターゲットにしています。たとえば、4つの 'install()'節があれば、2つは「COMPONENT a」、2つは「COMPONENT b」です。次に、 'make install'を実行すると、4つのターゲットがすべてインストールされますが、コンポーネント名" a "または" b "を指定すると2つだけインストールされます。 – arrowd

+0

すみません、コンポーネントは何ですか。それでも私は混乱しています。私にテストコードを教えてください。私はそれを実行することができます。いくつかの違いを参照してください – Samuel

-7

CMakeでinstallコマンドを使用できる方法は3つあります。

は、(1)実行可能

INSTALL(TARGETS ExecutableTarget RUNTIME DESTINATION FOLDER_LOCATION) 

は(2)静的ライブラリが

INSTALL(TARGETS StaticLibraryTarget ARCHIVE DESTINATION FOLDER_LOCATION) 

(3)あなたの答えのための動的ライブラリ

INSTALL(TARGETS SharedLibraryTarget LIBRARY DESTINATION FOLDER_LOCATION) 
+3

-1という質問が 'COMPONENT'キーワードの意味に関するものだったからです。この答えは、直交コンセプトである3種類のターゲットを示しています。 –

関連する問題