我可以隐藏我的柯南包的用户的链接标志吗?

时间:2016-02-13 15:15:31

标签: c++ linker-flags conan

我们假设我在conan中将一个图书馆作为一个包上传,该图书馆使用OpenGL,并在GL中与CMakeLists.txt建立链接。库的用户是否需要再次明确链接GL?柯南是否提供了跟踪它的方法并将其包含在${CONAN_LIBS}

我在docs中找到的最近的东西是方法package_info,似乎你可以指定链接器额外的选项,但我似乎没有正确使用它图书馆的conanfile.py。我尝试了所有:

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

但是如果在用户代码中我没有放置链接标志,则会引发"未定义的引用" GL的方法。

编辑:我在linux mint 17工作。

1 个答案:

答案 0 :(得分:3)

是的,您需要在conanfile.py package_info()方法中声明它,因为conan从包管理中解耦构建(在您的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未应用于您的目标。