我们假设我在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工作。答案 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
未应用于您的目标。