将 c 库路径从柯南包传递到源文件
Passing a c library path from a conan package to a source file
我正在使用 Conan 打包一个旧的 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 的路径并适当地传递它?
您可以使用 cmake generator expressions 获取目标库的路径。如果你在 TARGETS
模式下使用柯南,那么你可以这样做:
target_compile_definitions(MyApp PRIVATE PATH_TO_OLE_C_LIB=$<TARGET_FILE:CONAN_PKG::ole_c>)
或者,您可以填充 cpp-info.defines
in the conan recipe and make use of the package_folder
属性 以获取软件包的安装路径(我不确定这是否有效)。
我正在使用 Conan 打包一个旧的 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 的路径并适当地传递它?
您可以使用 cmake generator expressions 获取目标库的路径。如果你在 TARGETS
模式下使用柯南,那么你可以这样做:
target_compile_definitions(MyApp PRIVATE PATH_TO_OLE_C_LIB=$<TARGET_FILE:CONAN_PKG::ole_c>)
或者,您可以填充 cpp-info.defines
in the conan recipe and make use of the package_folder
属性 以获取软件包的安装路径(我不确定这是否有效)。