2

假设我有一个库作为包上传到conan中,它使用 OpenGL,因此GLCMakeLists.txt. 图书馆的用户是否需要再次明确链接到 GL?柯南是否提供了一种方法来跟踪它并将其包含在 中${CONAN_LIBS}

我在文档中找到的最接近的东西是 method package_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()方法中声明它,因为柯南将构建(在您的 cmake 文件中定义)与包管理分离。属性中有一个库的特定属性cpp_info,您可以使用它:

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

libs字段在依赖项之间是可传递的,GL lib 将包含在${CONAN_LIBS}变量中

也是可传递的sharedlinkflags,它以在 cmake 变量中累积的值结束${CMAKE_SHARED_LINKER_FLAGS}。但正如其名称所述,它仅用于共享链接,因此您可能没有构建这样的共享库,因此您的 lib 标记为GL未应用于您的目标。

于 2016-02-15T00:20:23.870 回答