2017-08-05 3 views
0

CMakeのfind_packageドキュメントは言う:CMakeでは、find_packageを呼び出した後、インポートされたターゲットを見つけるにはどうしたらいいですか?

パッケージが発見されたパッケージ固有の情報は、パッケージ自体によって文書化ターゲットの変数を通じて提供してインポートされます。

私はライブラリを持っている場合、私はfind_packageを使用して得ることができABCDは、cmakeのは、適切なABCDConfig.cmakeファイルを見つけることができます提供しました。次に、上述のように、インポートされたターゲット(例えば、abcd10 abcdExtra)を作成する。

それから私は、コンパイルなどのように、これらのライブラリをリンクすることができます。問題は他の誰かが書いたABCDConfig.cmakeファイルの内容は、ターゲットの名前がほとんどかもしれない方法に応じて、ある

target_include_directories(mytarget abcd10 abcdExtra) 
target_link_libraries(mytarget abcd10 abcdExtra) 

まったく同じライブラリかもしれませんが、何か(例:abcdlibabcdX64Foobar、...)です。ABCD

私は多くのドキュメントを見てきましたが、インポートされたターゲットを取得する方法がわかりません。そのため、インポートされた共通のターゲット名が何であるかを知り、 。これは私には少し不合理なようです。私はここに何かを逃していますかどのようにして、これらの詳細を知らないで、異なるパッケージマネージャ(または自分自身のABCDConfig.cmakeファイルを書いた人)によって生成されたライブラリを読み込んでリンクすることができますか?

答えて

2

これらの詳細を知らずに、別のパッケージマネージャー(または独自のABCDConfig.cmakeファイルを作成した人)によって生成されたライブラリーをロードしてリンクするにはどうすればよいですか?

できません。

唯一の方法はです。についてはABCDConfig.cmakeというファイルがあります。そのような文書は通常、ファイルの先頭に(コメントとして)書き込まれます。

CMakeはファイルをABCDConfig.cmakeについて何も強制しないので、ファイルの作成者だけがそのファイルの使用方法を知っています。

CMakeは設定ファイルの生成をサポートしていますが(install(EXPORTS)コマンドを参照)、プロジェクトの作成者だけがインポートされたターゲットの意味を知っています。

関連する問題