【问题标题】:Cmake external optional package addCmake外部可选包添加
【发布时间】:2016-09-30 18:19:16
【问题描述】:

我是 Cmake 新手,正在尝试构建一个需要可选包 (libspectre) 的 KDE 项目 (okular)。我进行了默认的 make install,库文件位于“/usr/lib/x86_64-linux-gnu”位置。

在生成器/CMakeLists.txt 中,我尝试将“macro_optional_find_package(LibSpectre)”替换为以下内容:

find_library(LIBSPECTRE_LIBRARY NAMES libspectre PATHS "/usr/lib/x86_64-linux-gnu/")

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibSpectre DEFAULT_MSG LIBSPECTRE_LIBRARY)

似乎找不到 libspectre 库。我尝试用 HINTS 替换 PATHS,并在 NAMES 之后将 'libspectre' 更改为 'spectre'。但它似乎不认识。

感谢任何帮助!

【问题讨论】:

  • 要查找的库文件(在/usr/lib/x86_64-linux-gnu/ 下)的确切名称(带有扩展名)是什么?你确定,给定的find_library() 调用被执行了吗? (尝试在其后添加message() 呼叫)。当您为自己构建项目时,最好在 CMake 缓存中设置 LIBSPECTRE_LIBRARY 变量。无需为此修改脚本。
  • 您好,库文件的名称是 libspectre.so.1。它是 libspectre.so.1.1.7 的符号链接。我会尝试你的建议。谢谢!

标签: cmake


【解决方案1】:

CMake 不知道库的so-version,它只检查精确的.so 扩展。

您可以创建libspectre.so - 指向libspectre.so.1 的符号链接。所以

find_library(LIBSPECTRE_LIBRARY NAMES spectre PATHS "/usr/lib/x86_64-linux-gnu/")

会起作用的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    相关资源
    最近更新 更多