jmm*_*mut 2 c++ linker-flags conan
比方说,我已上载在一个封装库柯南,它使用OpenGL,并与这些链接GL中CMakeLists.txt。库的用户是否需要再次明确链接到 GL?柯南是否提供了一种方法来跟踪它并将其包含在 中${CONAN_LIBS}?
我在文档中找到的最接近的东西是 method package_info,您似乎可以在其中指定链接器额外选项,但我似乎没有在我的库的conanfile.py. 我尝试了所有:
self.cpp_info.sharedlinkflags = ["-lGL", "GL", "libGL", "libGL.so", "-llibGL.so"]
Run Code Online (Sandbox Code Playgroud)
但是如果在用户代码中我没有放置链接标志,它会引发对 GL 方法的“未定义引用”。
编辑:我在 linux mint 17 中工作。
是的,您需要在conanfile.py package_info()方法中声明它,因为 conan 将构建(在您的 cmake 文件中定义)与包管理分离。属性中有一个特定的库cpp_info属性,您可以使用它:
def package_info(self):
self.cpp_info.libs = ["GL"]
Run Code Online (Sandbox Code Playgroud)
该libs字段在依赖项之间是可传递的,GL lib 将包含在${CONAN_LIBS}变量中
的sharedlinkflags是传递的太,和它结束其值在变量的CMake积累${CMAKE_SHARED_LINKER_FLAGS}。但正如其名称所述,它仅用于共享链接,因此您很可能没有构建这样的共享库,因此您的 lib 标志GL未应用于您的目标。