cmake - 从外部 CMakeLists.txt 文件导入目标,已经构建了外部源
问题描述
我正在尝试将Refinitiv Real-Time SDK集成到我自己的应用程序中。
我已经下载了源代码并构建了库。
通常,您会期望有一个 INSTALL 目标,它将库和头文件安装到某个位置,然后,如果幸运的话,find_package
我们可以稍后使用该模块将库目标导入到我们自己的项目中。
不幸的是,这些都没有提供。
那么,如何将库及其头文件导入我的项目?
ExternalProject_Add
我不想ExternalProject_Add
每次重新配置我的项目时都使用标准来下载和构建源代码。(特别是因为我们的 CI 服务器必须为每次构建都执行此操作。)我想构建一次(并使其成为 CI 服务器的 docker 映像的一部分),然后链接库/直接包含头文件从我复制源的地方。
add_library INTERFACE
我知道我可以创建一个新的INTERFACE
库目标
find_library(LIB_EMA ema ${REFINITIV_BINARY_DIR})
find_library(LIB_ETA eta ${REFINITIV_BINARY_DIR})
# etc.. for all the refinitiv libraries
add_library(refinitiv INTERFACE)
target_link_libraries(refinitiv INTERFACE
${LIB_EMA}
${LIB_ETA}
# etc...
)
target_include_directories(refinitiv INTERFACE
${REFINITIV_SOURCE_DIR/Ema/Include
${REFINITIV_SOURCE_DIR/Eta/Include
# etc...
)
但是,每当 Refinitiv 发布新的 SDK 版本并决定更改路径或链接依赖项等时,这很乏味且容易中断
问题:
我要做的是使用他们的CMakeLists.txt
文件,但只能访问已经构建的目标,而不是将它们构建为我的构建的一部分。
这可能吗?
解决方案
推荐阅读
- node.js - 无法使用 Edge.js 从节点服务调用 C# DLL 中的方法
- c++ - std::packaged_task 应该已经删除了带有 const 参数的副本 c'tor
- java - 使用 Spring Data R2DBC 获取嵌套对象
- python-3.x - 斐波那契数列程序
- c# - 使用 ShellExecute 在 UWP 应用程序中访问 ACCESS_DENIED
- typescript - 离子中的离子清新剂错误
- javascript - 生成器的部分迭代使用 for ... of
- javascript - 如何在javascript中使用参数多次调用同一个函数?
- javascript - 如何在 createSwitchNavigator 中设置动态 initialRouteName?
- python - 用工厂初始化后,我无法从初始化的类中访问实例