如何解决从外部 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
文件,但仅用于访问已构建的目标,不将它们构建为我构建的一部分。
这可能吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。