首页 > 解决方案 > 将 ac 库路径从柯南包传递到源文件

问题描述

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

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

所以设置是这样的:

柯南包大致像:

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

消费:consumer_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 的路径并适当地传递它?

标签: c++cmakeconan

解决方案


您可以使用cmake 生成器表达式来获取目标库的路径。如果您在TARGETS模式下使用柯南,那么您可以这样做:

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

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


推荐阅读