【发布时间】:2021-06-24 16:02:38
【问题描述】:
我正在使用柯南来打包一个旧的 C 库。
库有一个加载过程,需要您从 .cpp 源文件中提供库的路径。如何从消费源内部访问 conan 打包 lib 的目录?
所以设置是这样的:
柯南包大致如下:
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/C++ 源文件与此无关。构建管理器会将信息传递给头文件和库所在的编译器和链接器。在源代码中唯一应该可见的是
#include <ole_c_api.h>。 IMO 你应该阅读构建过程基础知识,conan 和 cmake 只是为此提供配置。 -
我没有制作这个库,我也不喜欢它,但尽我所能从他们的文档中看出它是如何工作的。这第一个库似乎加载了一大堆库。套用它们:“当您加载库时,您指示系统加载共享对象文件并将所有函数指针设置为各自的值。这是通过调用 OLECLoadLibrary 完成的。此函数存在两个版本:如果您愿意,请使用 OLECLoadLibraryA使用 const char* 指定库路径。如果您希望使用 const wchar_t* 指定库路径,请使用 OLECLoadLibraryW。"