gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:33:29 26 4
gpt4 key购买 nike

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

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

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

但是如果在用户代码中我没有放置链接标志,它会引发对 GL 方法的“ undefined reference ”。

编辑:我在 linux mint 17 中工作。

最佳答案

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

关于c++ - 我可以对我的 conan 包的用户隐藏我的链接标志吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com