微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 c 库路径从 conan 包传递到源文件

如何解决将 c 库路径从 conan 包传递到源文件

我正在使用 Conan 来打包一个旧的 C 库。

库有一个加载过程,需要您从 .cpp 源文件中提供库的路径。如何从消费源内部访问到 conan 打包库的目录?

所以设置如下:

conan 包大致如下:

ole_c/0.0:
    
    |--include
    
       |-- ole_c_api.h
    
    |--bin
    
       |-- libole_c.so

消耗: 消费者_main.cpp

然后consumer_main.cpp 包含ole_c_api.h 并且必须调用一个传递路径到libole_c.so函数

你怎么能把那个路径传递给consumer_main.cpp? 一种可能性是传递一个编译标志 -dpath_TO_OLE_C_LIB= 然后可以通过 consumer_main.cpp 中的宏进行字符串化。如何从 cmake 内部或在 ole_c 包装 conan.py 中访问 libole_c.so 的路径并适当地传递它?

解决方法

您可以使用 cmake generator expressions 获取目标库的路径。如果您在 TARGETS 模式下使用柯南,那么您可以这样做:

target_compile_definitions(MyApp PRIVATE PATH_TO_OLE_C_LIB=$<TARGET_FILE:CONAN_PKG::ole_c>)

或者,您可以在 conan 配方中填充 cpp-info.defines 并利用 package_folder 属性来获取包的安装路径(我不确定这将如何工作).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。