我正在尝试将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
文件,但只能访问已经构建的目标,而不是将它们构建为我的构建的一部分。
这可能吗?