【问题标题】:How to link to multiple third-party libraries that don't support cmake如何链接多个不支持cmake的第三方库
【发布时间】:2020-08-25 22:32:59
【问题描述】:

我目前正在将一个项目移植到 CMake,它依赖于一堆第三方库,这些库都不支持 CMake。到目前为止,该项目编译良好,但我需要将可执行文件链接到那些第三方库。 CMake 是否提供任何方法来创建构建目标,一旦添加为链接目标,项目就可以链接到所有第三方库?

【问题讨论】:

  • 如果您想在您的 CMake 项目中构建那些非 CMake 库,请查看 ExternalProject_Add 命令。如果您已经构建了这些库,例如 .a.so 文件,并且只想链接它们,请参阅 that question
  • @Tsyvarev 在这种情况下不需要构建任何东西。唯一的要求是导入头文件并链接到一堆库。

标签: cmake


【解决方案1】:

您可以创建INTERFACE 库目标并为其指定包含目录列表和要链接的库列表。每当该目标链接时,那些包含目录和库就会传播给消费者。

# Create the library which represents all third-party libraries
add_library(third_party_libs INTERFACE)
target_include_directories(third_party_libs INTERFACE
  <include-directory-1>
  <include-directory-2>
  ...
)
target_link_libraries(third_party_libs INTERFACE
  <external-lib-1>
  <external-lib-2>
  ...
)

# Create executable in your project
add_executable(my_exe <sources...>)

# This will propagate to the executable all include directories and libraries from
# the INTERFACE library target.
target_link_libraries(my_exe third_party_libs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2021-12-05
    • 2017-01-05
    相关资源
    最近更新 更多