如何解决将 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 举报,一经查实,本站将立刻删除。