如何设置 LIBUSB_INCLUDE_DIR

2024-02-14

我正在尝试为arm交叉编译libftdi。当我运行 Cmake 时,我得到:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LIBUSB_INCLUDE_DIR (ADVANCED)

我知道 LIBUSB_INCLUDE_DIR 应该在 libftdi 根目录中的 FindUSB1.cmake 中设置。但是,我不知道如何让 FindUSB1.cmake 找到我已编译并放入 /opt/lib 的 libusb。这是默认文件:

# - Try to find the freetype library
# Once done this defines
#
#  LIBUSB_FOUND - system has libusb
#  LIBUSB_INCLUDE_DIR - the libusb include directory
#  LIBUSB_LIBRARIES - Link these to use libusb

# Copyright (c) 2006, 2008  Laurent Montel, <[email protected] /cdn-cgi/l/email-protection>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.


if (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)

  # in cache already
  set(LIBUSB_FOUND TRUE)

else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
  IF (NOT WIN32)
    # use pkg-config to get the directories and then use these values
    # in the FIND_PATH() and FIND_LIBRARY() calls

    find_package(PkgConfig)
    pkg_check_modules(PC_LIBUSB libusb-1.0)
  ENDIF(NOT WIN32)

  FIND_PATH(LIBUSB_INCLUDE_DIR libusb.h
    PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})

  FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0
    PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})

  include(FindPackageHandleStandardArgs)
  FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)

  MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES)

endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)

在/opt/lib中有一个目录pkconfig。在这个目录中有一个 libusb-1.0.pc 文件,我猜它可能与该问题有关。那么我应该如何让 Cmake 找到 /opt/lib/libsub-1.0 呢?


不幸的是,默认的查找脚本不是很强大。如果图书馆不在默认目录之一 http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:find_library搜索者find_library,你必须依靠pkg-config http://linux.die.net/man/1/pkg-config告诉您图书馆位于哪里。

万一(不太可能)图书馆未注册pkg-config要么,你别无选择,只能设置PC_LIBUSB_LIBDIR and PC_LIBUSB_INCLUDEDIR在调用 find 脚本之前手动更改变量。这可以从命令行完成(使用-D范围 http://www.cmake.org/cmake/help/v2.8.12/cmake.html#opt:-Dvar:typevalue)或从封闭的 CMake 脚本中(使用set http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:set).

如果您可以随意更改查找脚本,请考虑添加其他内容HINTSfind 调用使​​它们更加灵活。例如,使用环境变量作为提示是一种非常流行的机制,也适用于非 Unix 平台。

FIND_PATH(LIBUSB_INCLUDE_DIR libusb.h
    HINTS $ENV{LIBUSB_ROOT}
    PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}
    PATH_SUFFIXES include)

FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0
    HINTS $ENV{LIBUSB_ROOT}
    PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}
    PATH_SUFFIXES lib)

从 CMake 3.12 版本开始,CMake 将自动采用<PackageName>_ROOT变量 https://cmake.org/cmake/help/latest/variable/PackageName_ROOT.html#variable:%3CPackageName%3E_ROOT考虑作为调用的提示find_package调用,以及所有嵌套find_*从查找脚本中进行的调用,该脚本是由调用触发的find_package。因此,在这些情况下,您不必再手动指定它们作为提示。请注意,要使其发挥作用,您的cmake_minimum_required https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html版本需要设置为3.12或更高版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 LIBUSB_INCLUDE_DIR 的相关文章

  • 在cmake中设置PKG_CONFIG_PATH

    我已经在本地构建了 opencv 并将其安装到本地目录 不是系统默认目录 opencv pc存在于该本地文件夹中的 pkgconfig 文件夹下 我怎样才能找到这个opencv pc来自 cmake 因为我想从我的程序链接并包含 openc
  • 如何使我的单元测试适应 cmake 和 ctest?

    到目前为止 我已经使用了一个临时的单元测试程序 基本上是由批处理文件自动运行的全部单元测试程序 尽管其中很多都明确地检查了他们的结果 但还有更多的作弊行为 他们将结果转储到版本控制的文本文件中 测试结果中的任何更改都会被颠覆标记 我可以轻松
  • 在 C 中使用 pow 时,CMake 可以检测是否需要链接到 libm 吗?

    对于某些编译器 using powC 程序中的某些其他函数需要链接到m library https stackoverflow com q 8671366 1959975 但是 某些编译器不需要这样做 并且在链接到m图书馆 C 也存在几乎相
  • 如何将 gnatmake/gnatbind/gnatlink 集成到 C/Ada 代码的 CMake 文件中?

    我用几种语言 C C Fortran77 Fortran90 编写了代码 并且可以使用 CMake 编译它 没有任何问题 效果很完美 现在 我想在用 C 编写的 main 中添加一些 Ada 函数 并且我想通过 CMake 编译它 鉴于我无
  • 在cmake中集成bash测试脚本

    我有一个 C cmake 项目 它使用 Boost Test 进行单元测试 现在我想向 cmake 公开一系列 bash 脚本 用于集成测试 假设每个脚本在以下情况下返回 0PASS或某些情况下 0FAILURE 我希望每次运行时都执行每个
  • 为什么 cmake 在 git commit 后编译所有内容

    假设我有时在 Linux 上使用 cmake 2 8 编译一段代码 我更改了一个文件 my changed file 运行 cmake 并且只构建了这个文件 到目前为止 一切都很好 现在我想提交这个 git add my changed f
  • 无法在 Android 上编译 avahi

    我是交叉编译的新手 我被分配了使用android补丁的任务http avahi org ticket 354 http avahi org ticket 354将 avahi 核心编译为 android ndk build avahi co
  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • 在 OSX 上交叉编译 Go?

    我正在尝试在 OSX 上交叉编译 go 应用程序以构建适用于 Windows 和 Linux 的二进制文件 我已经阅读了网上能找到的所有内容 我发现的最接近的例子已经发布在 除了疯狂邮件列表上许多未完成的讨论之外 http solovyov
  • /usr/bin/as:无法识别的选项“-EL”

    因此 在为我的1plus手机编译android内核时 经过3天的多次尝试 我放弃了并尝试在这里询问是否有人以前遇到过这个问题 这个错误对我来说有点模糊 但我觉得问题来自于我最近对 GNU Linux 发行版 Gentoo 的更改 它在不应该
  • 如何使用自定义 CMake 版本执行 Visual studio 2019 Ninja 构建?

    我正在尝试从 IDE 在 Visual Studio 2019 上使用 Ninja 构建一个项目 我想使用与 VS 2019 发行版中集成的版本不同的 CMake 版本 我已经设置了cmakeExecutable我的变量CMakeSetti
  • 使用cmake交叉编译gRPC

    我正在尝试使用 cmake 交叉编译 gRPC 我实际上做到了 不幸的是 我的方法涉及在 CMakeLists txt 内部进行修改 问题是 当我尝试编译 gRPC 时 它使用的是他刚刚编译的 protobuffer 它无法在 x86 计算
  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • 我可以安装共享导入库吗?

    我有一个外部项目和一个导入的共享库 include 目录和 implib 都可以正常工作 但尝试安装共享库 dll 失败并出现以下错误 install TARGETS given target my shared lib which doe
  • 如何使用cmake自动构建第三方库

    我在寻找什么 下载库 提取它 应用自定义补丁 运行配置 运行构建命令 我正在尝试构建的库是 Openssl Boost Thrift C ares Curl Pcre Nginx ICU JsonCPP 我想我可以使用外部模块做这些事情 h
  • 编译器标志的 cmake list 附加会产生虚假结果?

    我需要向 CMake 文件 CMake 2 8 10 2 中的 C 和 C 编译行添加各种标志 我看到有些人使用add definitions但据我所知 这是用于预处理器标志的 D 我有一些标志不想传递给预处理器 所以我一直在尝试修改CMA
  • CMake第三方库安装

    我是编程新手 对于我的研究项目 我需要安装一个第三方库以便与 CMake 一起使用 GitHub项目 https github com cpp io2d P0267 RefImpl blob master BUILDING md 我在我的电
  • CMake GUI:指定 Windows 的库路径

    我正在编译一个基于 CMake 的项目 具体来说是 SOCI 它依赖于 SQLite 这是Windows 没有可供项目研究的标准路径 因此它找不到SQLite 我在配置时得到这个 SQLite3 not found some librari
  • CMake:Fortran 模块和编译顺序

    我有一个大型 Fortran 程序 其中包含许多目录 每个目录都在伪库中单独编译 但仍然存在相互依赖的混乱 因此最终所有伪库都组合在一个可用的库中 我想使用 Fortran 模块 但它非常脆弱 因为我不能依赖自动依赖项检查 并且根据顺序编译
  • 如何配置 cmake 在修改非 .cpp 源文件时重新编译目标

    如果我们看下面的最小示例 cmake minimum required VERSION 3 20 project example add executable PROJECT NAME main cpp test txt 一旦可执行目标被构

随机推荐

  • Java 中的 DB2 连接速度极慢

    我正在尝试从 Java 应用程序连接到 Linux 服务器上的 IBM DB2 9 数据库 我在用db2jcc jar DB2 通用 JDBC 驱动程序 建立连接需要花费大量时间 可能出什么问题了 我知道有很多因素可能导致这种情况 但我想找
  • Chrome - Fetch API 无法加载文件。如何解决?

    我有以下两个文件 索引 html
  • 如何从 json 字典自动创建模型类(NSObject)?

    有没有办法创建字典或 json 响应的模型类 包装器 因为在我的应用程序中有很多网络服务 并且所有 WS 都包含大数据 如果我一直一一创建 则需要花费很多时间来创建带有检查空数据和编码解码对象的 NSObject 类 请建议我手动创建所有
  • 在包含路径 phpstorm 中找不到 PHPUnit

    Cannot find PHPUnit in include path是我尝试在 phpstorm 中运行代码时收到的错误消息 在 PHP 设置中 我的 PHP 级别语言是5 4 traits short array syntax etc
  • 使用 EWS API 将邮件保存到 msg 文件

    我正在使用 Exchange Web Services Managed API 1 1 连接到 Exchange Server 2010 然后查找收到的新电子邮件 现在我想将 msg 文件的副本保存到磁盘上的文件夹中 我不想使用任何付费第三
  • python 中的阿姆斯特朗数

    num int input please enter number for num in range num 1000 sum1 0 numcp num if num gt 10 and num lt 100 while num gt 0
  • 在脚本的Google表格中获取带有#NA的公式的错误注释

    我找不到任何方法来获取失败公式的错误消息 实际上它提供了更多信息 而只是错误代码 因为 NA 始终为 7 NA 可能意味着不同的东西 我希望能够识别哪些细胞具有哪种类型的 NA getNote不起作用 有办法吗 我使用 IMPORTXML
  • 错误:未定义标签,如何在java中使用此代码中的标签语句?

    我在Java教科书中读到任何语句都可以被标记并且可以与break一起使用 但是在尝试此代码时 我收到错误未定义标签 stackoverflow 的伙计们在将这个问题标记为重复之前先等待 我已经检查了这些问题 但没有一个解释这个问题 publ
  • 如何从文件类型获取文件扩展名?

    我有一个文件名列表如下 files dl files 4j55eeer wq3wxxpiqm jpg home Desktop hjsd03wnsbdr9rk3k kd0dje7cmidj0xks03nd8nd8a3 问题是大多数文件的文件
  • SAP Crystal Reports Viewer 不显示在浏览器中

    我拥有一个使用框架 4 5 的 ASP NET Web 项目 已安装并实施适用于 VS2012 Crystal Reports Developer 的 SAP 报表 在本地报告中 它可以在浏览器 Chrome Firefox IE 中正常工
  • 有没有 numpy group by 函数?

    numpy 中是否有任何函数可以按第一列将该数组分组到下面 我在互联网上找不到任何好的答案 gt gt gt a array 1 275 1 441 1 494 1 593 2 679 2 533 2 686 3 559 3 219 3 4
  • Bootstrap 3 中的垂直对齐字形

    我有一个这样的字形 div class col xs 4 col sm 2 span class glyphicon glyphicon circle arrow up glyphicon large span div glyphicon
  • 在 WordPress 中获取页面(无帖子)的精选图像

    我需要显示所有页面的特色图像 而不是帖子 我有这个代码 img src class header img alt 但这仅显示一张特色图像 太感谢了 您可以简单地使用 WP Query 来获取它 loop new WP Query array
  • Yii2 自定义分页联合查询

    我想在 Yii2 中实现自定义分页 这是我的代码 connection Yii app gt getDb name GET name query SELECT name FROM user WHERE name LIKE name UNIO
  • Python 将十进制转换为十六进制

    我这里有一个函数可以将十进制转换为十六进制 但它以相反的顺序打印它 我该如何解决它 def ChangeHex n if n lt 0 print 0 elif n lt 1 print n else x n 16 if x lt 10 p
  • jQuery:无限滚动和后退按钮

    好吧 我知道这会给每个人带来问题 也给我带来问题 我在客户的网站上使用无限滚动插件 结合同位素插件按顺序加载他们的产品 问题是 因为他们有 1000 种产品 任何浏览该网站然后点击进入产品的人 当他们点击按后退按钮 它们将返回到顶部 或第一
  • 将多个文件导入到 R 中的单个合并数据框中

    我有 8 个 CSV 文件都在同一目录中 需要将它们导入到 R 中的单个数据框中 它们都遵循相同的命名约定 dataUK 1 csv dataUK 2 csv 等 并且具有完全相同的功能列的结构 我已经成功地使用以下方法创建了所有文件名 包
  • VS 2012 中的可变参数模板(Visual C++ 2012 年 11 月 CTP)

    我安装了Visual C 编译器 2012 年 11 月 CTP http www microsoft com en us download details aspx id 35515并创建了一个 C 控制台项目 我把这个写在 templa
  • 单态与单态

    当人们使用单态模式而不是单例来维护全局对象时 会出现什么情况 编辑 我知道什么是单例模式和单态模式 在很多场景中也实现了 Singleton 只是想知道MonoState模式需要实现的场景 案例 例如 我需要在 Windows 窗体应用程序
  • 如何设置 LIBUSB_INCLUDE_DIR

    我正在尝试为arm交叉编译libftdi 当我运行 Cmake 时 我得到 CMake Error The following variables are used in this project but they are set to N