【问题标题】:cmake: install externally supplied include and libcmake:安装外部提供的包含和库
【发布时间】:2019-12-25 15:00:55
【问题描述】:

我有一个非常简单的问题,但我没有找到解决方案:

我正在与一家公司合作,该公司偶尔会向我发送两个目录,一个包含 .h 文件,第二个包含两种形式的库,共享和静态。 说-

X/include/*
X/lib/libX.so
X/lib/libX.a

我想用一个执行这个简单操作的 cmake 项目来包装这个输入 - 创建一个我可以安装的 cmake 目标、别名、版本等。

【问题讨论】:

  • 到目前为止您尝试过什么?您是否花了一些时间阅读 CMake 文档并尝试了解决方案?请发布您已经尝试过的 CMake 代码。
  • 是的,当然,在 stackoverflow 中发帖是最后的选择。看看cmake.org/cmake/help/latest/command/add_library.html——都需要源文件,导入的不允许添加文件。
  • 另外,找不到自然安装或添加自定义目标依赖项的方法。
  • 您仔细查看了IMPORTED 库吗? This 是一个很好的介绍。
  • @Botje - 我读了几遍。它很好,但很难用作参考。我会再读一遍,寻找答案

标签: c++ build cmake installation cmake-language


【解决方案1】:

你可能想看看here,因为它很好地解释了如何导入目标。

这样的事情应该可以工作:

# Shared library
add_library(LibX-Shared SHARED IMPORTED)
set_target_properties(LibX-Shared PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "X/include"
  IMPORTED_LOCATION "X/lib/libX.so"
)

# Static library
add_library(LibX-Static STATIC IMPORTED)
set_target_properties(LibX-Static PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "X/include"
  IMPORTED_LOCATION "X/lib/libX.a"
)

那么你应该可以在 CMake 中使用这些目标:

target_link_libraries(myexe LibX-Shared)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多