微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从外部 CMakeLists.txt 文件导入目标,已经构建了外部源

如何解决从外部 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 举报,一经查实,本站将立刻删除。