とりあえず
xxx-config.cmakeさえ作っておけば良い?
static library
add_libraryでSTATICを指定
- ファイルの出力先はset_target_properties(ARCHIVE_OUTPUT_DIRECTORY ${DIR_TO_OUTPUT})で指定
shared library
add_libraryでSHAREDを指定
- ファイルの出力先はset_target_properties(LIBRARY_OUTPUT_DIRECTORY ${DIR_TO_OUTPUT})で指定
- ライブラリコンパイル時にtarget_link_libraries()で依存ライブラリへのリンクを貼る必要あり
install()
install時の動作を指定
install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static) install(TARGETS mySharedLib DESTINATION /some/full/path)
上記の命令で以下のようになる
- 実行ファイルmyExeを
/bin にインストール - 静的ライブラリmyStaticLibを
/lib/static にインストール - 共有ライブラリmySharedLibを
/lib と /some/full/path にインストール DLLを作成する場合はmySharedLib DLLを /bin と /some/full/path にインストール - インポートするlibraryを
/lib/static と /some/full/path にインストール
find_package()で見つけるための xxx-config.cmake を作成するには install(EXPORT)
install(TARGETS myexe EXPORT myproj DESTINATION bin) install(EXPORT myproj NAMESPACE mp_ DESTINATION lib/myproj)
上記の命令で以下のようになる
- 実行ファイル myexe を /bin にインストール
- インポートするコードを /lib/myproj/myproj.cmake にインストール
- NAMESPACEは
:: にするのが最近の傾向っぽい (確かにvcpkgの挙動もそうなってる)
find_package()
_FOUND: ライブラリの発見の有無を表す INCLUDE_DIRS or INCLUDES: include path LIBRARIES or LIBS: ライブラリの名前 _DEFINITIONS: 追加のコンパイルフラグ