共有ライブラリを含む2つのパッケージと、開発で使用するヘッダーを含むもう1つのパッケージを作成します。cmake install PUBLIC_HEADERを使用して別のコンポーネントとしてライブラリと開発ファイルを作成
機能するソリューションは以下のとおりです。
INSTALL(TARGETS mylib
COMPONENT core
LIBRARY DESTINATION ${LIBDIR}
)
INSTALL (
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMPONENT devel
DESTINATION ${INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
CMakeのも "PUBLIC_HEADER" 宛先を持っているが。あなたが何か行うことができます こうした:
INSTALL(TARGETS mylib
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
)
を私はこの仕事を得るように見えることはできません。ヘッダーファイルが明示的にADD_LIBRARY()に追加されていても、$ {INCLUDEDIR}には何もインストールされません。誰かがこれがどのように動作するはずの例を指摘できますか?これで
別の問題私は、理想的に私が欲しい異なるパッケージでライブラリやヘッダをしたいということです。
INSTALL(TARGETS mylib
COMPONENT core
LIBRARY DESTINATION ${LIBDIR}
)
INSTALL(TARGETS mylib
COMPONENT devel
PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
)
しかしPUBLIC_HEADERが設定されているLIBRARY DESTINATIONを必要とするようです。 これを行う方法はありますか? PUBLIC_HEADERのインストールディレクトリに対する利点はありますか?
私はドキュメントがそれほど明確ではないとは確信していません。私は(誤って) "Apple以外のプラットフォームでは、これらのヘッダはPUBLIC_HEADERオプションを使ってインストール(TARGETS)コマンドにインストールすることができます。"これが良い方法であることを暗示しています。パブリックヘッダーとプライベートヘッダーを分離するという考えは、何とかアピールします。 –
@ BruceAdams特に、あなたが尋ねたことだけを行う機能を探しているなら、それは簡単に間違いです。 – ComicSansMS