2

OpenGL を使用するconanにパッケージとしてアップロードされたライブラリがありGLCMakeLists.txt. ライブラリのユーザーは、再度 GL に対して明示的にリンクする必要がありますか? コナンはそれを追跡して に含める方法を提供してい${CONAN_LIBS}ますか?

私がドキュメントで見つけた最も近いものは methodpackage_infoです。リンカーの追加オプションを指定できるようですが、私のライブラリの で適切に使用していないようですconanfile.py。私はすべてを試しました:

    self.cpp_info.sharedlinkflags = ["-lGL", "GL", "libGL", "libGL.so", "-llibGL.so"] 

しかし、ユーザー コードでリンク フラグを設定しないと、GL のメソッドへの「未定義の参照」が発生します。

編集: Linux mint 17 で作業しています。

4

1 に答える 1

6

conanfile.py package_info()はい、 conan は (cmake ファイルで定義されているように) ビルドをパッケージ管理から切り離すため、メソッドで宣言する必要があります。属性にはライブラリの特定の属性がありcpp_info、これを使用できます。

def package_info(self):
    self.cpp_info.libs = ["GL"]

このlibsフィールドは依存関係の間で推移的であり、GL ライブラリは${CONAN_LIBS}変数に含まれます。

も推移的であり、そのsharedlinkflags値が cmake 変数に蓄積されて終了します${CMAKE_SHARED_LINKER_FLAGS}。ただし、その名前が示すように、共有リンク専用であるため、そのような共有ライブラリを構築していない可能性が高いため、lib フラグGLがターゲットに適用されていません。

于 2016-02-15T00:20:23.870 に答える