我可以对我的 conan 包的用户隐藏我的链接标志吗?

jmm*_*mut 2 c++ linker-flags conan

比方说,我已上载在一个封装库柯南,它使用OpenGL,并与这些链接GLCMakeLists.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 中工作。

dro*_*dri 6

是的,您需要在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未应用于您的目标。