web-dev-qa-db-ja.com

パッケージとライブラリ

CMakeの使用を開始したばかりで、両方にfind_packagefind_library。そして、これは私を混乱させます。誰かがプログラミングの世界でのパッケージとライブラリの違いを説明できますか?または、CMakeの世界では?

皆さん、感謝します!

42

プロジェクトでzlibを使用する場合、ヘッダーファイル_zlib.h_とライブラリ_libz.so_(Linuxの場合)を見つける必要があるとします。低レベルのcmakeコマンド_find_path_および_find_library_を使用して検索するか、find_package(ZLIB)を使用できます。後者のコマンドは、zlibを使用するために必要なものをすべて見つけようとします。追加のマクロ定義または依存関係にすることができます。

更新、_find_package_の詳細:CMakeコマンドfind_package(SomeThing)が呼び出されると、 ドキュメンテーション が言うように、2つの可能性があります:モジュールモード(ファイル_FindSomeThing.cmake_を検索する)、または構成モード(_SomeThingConfig.cmake_という名前のファイルを検索する)です。 ZLIBの場合、_FindZLIBという名前のモジュールがCMake自体に同梱されています(私のLinuxマシンでは、_/usr/share/cmake/Modules/FindZLIB.cmake_ファイルです)。このモジュールは、CMake APIを使用してデフォルトの場所でZLIBファイルを検索するか、自動的に見つからない場合はユーザーに場所を要求するCMakeスクリプトです。

31
lrineau