4
とにかくCMAKE_MODULE_PATHを指定する必要がある場合、find_package()はどのように使用しますか?
CMakeを使用して、クロスプラットフォームのビルドシステムを動作させようとしています。現在、ソフトウェアにはいくつかの依存関係があります。自分でコンパイルして、システムにインストールしました。 インストールされたいくつかのサンプルファイル: -- Installing: /usr/local/share/SomeLib/SomeDir/somefile -- Installing: /usr/local/share/SomeLib/SomeDir/someotherfile -- Installing: /usr/local/lib/SomeLib/somesharedlibrary -- Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake -- Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake CMakeは、ファイルfind_package()を開きFind*.cmake、システム上のライブラリを検索して、いくつかの変数を定義するを持っていますSomeLib_FOUND。 私のCMakeLists.txtには次のようなものが含まれています。 set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}") find_package(SomeLib REQUIRED) 最初のコマンドは、CMakeがの後に検索する場所を定義し、が見つかる場所のFind*.cmakeディレクトリを追加したので、期待どおりに機能します。SomeLibFindSomeLib.cmakefind_package() しかし、find_package()存在する理由の1つは、非クロスプラットフォームのハードコードされたパスから離れることです。 これは通常どのように行われますか?のcmake/ディレクトリをSomeLibプロジェクトにコピーして、CMAKE_MODULE_PATH相対的に設定する必要がありますか?
167
cmake