使用带有空格的 CMake 的 include_directories 命令

2024-04-13

我正在使用 CMake 来构建我的项目,并且有以下行:

include_directories(${LLVM_INCLUDE_DIRS})

评估后LLVM_INCLUDE_DIRS,评估为:

include_directories(C:\Program Files\LLVM\include)

问题在于,这被认为是两个包含目录,“C:\Program”和“Files\LLVM\include”。

知道如何解决这个问题吗?我尝试使用引号,但没有成功。

EDIT:原来问题出在文件上llvm-3.0\share\llvm\cmake\LLVMConfig.cmake。我将以下路径用引号括起来,问题就解决了:

set(LLVM_INSTALL_PREFIX C:/Program Files/LLVM)
set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include)
set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib)

在 CMake 中,

  • 空格是列表分隔符(例如;),
  • 评估变量名基本上是用变量名的内容替换变量名
  • \是一个转义字符(要获得该符号,也需要对其进行转义)

所以,在你的例子中,include_directories(C:\\Pogram Files\\LLVM\\include)是相同的

include_directories( C:\\Program;Files\\LLVM\\include)

即包含两个项目的列表。为了避免这种情况,要么

  • 也逃避空白:

    include_directories( C:\\Program\ Files\\LLVM\\include) or

  • 用引号将路径引起来:

    include_directories( "C:\\Program Files\\LLVM\\include")

显然,第二个选项是更好的选择

  • 更简单、更容易阅读
  • 可以与您的示例中的变量评估一起使用(因为评估结果随后用引号引起来,因此被视为单个项目)

    include_directories("${LLVM_INCLUDE_DIRS}")

这也有效,如果LLVM_INCLUDE_DIRS是多个目录的列表,因为此列表中的项目将显式分隔;这样就不需要未加引号的空格作为隐式列表项分隔符。

边注:当在我的 CMake 文件中使用硬编码路径名(无论出于何种原因)时,我通常使用正斜杠作为目录分隔符,因为这也适用于 Windows,并且避免需要转义所有反斜杠。

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

使用带有空格的 CMake 的 include_directories 命令 的相关文章

随机推荐

  • 什么是http请求期间的连接超时

    我找到了关于 连接超时 的两种解释 当客户端在 timeout 秒内未向服务器发送任何字节时 服务器将关闭套接字连接 它似乎与 HTTP 标头有一些关系 Connection keep alive 如果在此期间未建立套接字连接 则客户端将在
  • 按比例填充 UIStackView

    我正在使用 Storyboard 创建一个由 UITableView 和底部的 UIView 组成的布局 我正在使用 UIStackView 并垂直播放它们 我希望 UITableView 占据高度的 80 UIView 页脚 占据 20
  • Haskell - 需要为类型类定义 Vector2 实例

    newtype Vector2 a Vector2 a a deriving Show Eq class VectorSpace v where vZero Num a gt v a vSum Num a gt v a gt v a gt
  • 在maven中配置不同文件类型的编码?

    我用maven 资源插件 http maven apache org plugins maven resources plugin faq html过滤我的 Maven 项目中的一些资源 在我的父项目中 我有
  • 强制 applicationCache 重新加载缓存文件

    我使用 HTML5 applicationCache 来存储页面的许多 Javascript CSS 图像等文件 如果我更新其中一个文件 浏览器永远不会重新加载它 我已经尝试过以下方法 在页面加载时调用 applicationCache u
  • 如何从vue3中的“setup”方法中“发出”事件?

    我知道我可以打电话给emit方法从setup方法 但是有没有办法从任何其他函数发出事件而不传递emit设置方法中的方法 不是中的功能 methods选项 但是一个useXXX功能 setup函数有两个参数 第一个是props 第二个是con
  • Marshal.Sizeof() 返回意外值

    我正在调试第三方编写的 C 代码 该项目是一个旧的 C 项目 由承包商用 C 重写 我无法访问该承包商 我编写了原始的 C 版本 问题在于 C 代码获取表示通过 UDP 连接接收的数据的结构的大小 该结构体定义为 StructLayout
  • 是否可以从 Cucumber 功能文件中传递 Java-Enum 作为参数

    我目前正在将selenium与Java一起使用 并希望实现cucumber以使测试脚本更具可读性 目前在将参数传递给 java 方法时面临问题 其中 Enum 应该作为参数 我还想知道在迁移当前框架之前 cucumber java 是否还有
  • 如何解决Android Phonegap应用程序SyntaxError:解析错误? (黑屏问题)

    我在用着weinre http people apache org pmuellr weinre docs latest 能够对在 Mac OS X 最新版本 上运行的 Android 模拟器上执行的应用程序进行远程调试 上下文 最终必要
  • 将 SelectList“SelectedValue”传递给控制器​​操作方法

    我有一个注册表单 其中显示用户姓名 文本框 电子邮件 文本框 和部门 选择列表 名称和电子邮件已预先填充 我正在使用 Windows 身份验证 Intranet 应用程序 并且我想将 SelectedValue 作为 Int32 从 Dro
  • 如何使用 mysql 从 php 中的表中返回多行

    我决定为我的家人建立一个梦幻足球网站 但我无法从数据库返回多行 我想要的 进行一次 sql 调用并获取整个玩家列表 以便我可以填充一个对象或对象列表 如果整个桌子都可以归还那就太好了 我的目标是简单地向用户显示待选秀的可用球员列表 目前 通
  • 正则表达式 - 贪婪 - 匹配 HTML 标签、内容和属性

    我正在尝试匹配 HTML 源中的特定 span 标签 lang 属性和标签的内部 HTML 用作返回新字符串的函数的参数 我想用被调用函数的结果替换旧的标签 属性和内容 主题大概是这样的 p Some codesnippet p span
  • Javascript - 从数组中弹出一个值,但不在数组末尾

    例如 我有一个名为 pvalue 的数组 每个数字都是单数 没有重复的 1 2 3 15 20 12 14 18 7 8 sizeof 10 例如 我需要弹出值 15 在此之后的 pvalue 应该是 1 2 3 20 12 14 18 7
  • python中可以使用socket连接不同网络上的多台计算机吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在互联网上寻找答案 但到目前为止还没有找到 我对网络非常陌生 所以请接受我对此几乎一无所知 我能够使用套接字在 LAN 网络上的
  • disableOpenGesture 隐藏不起作用 导航抽屉本机反应

    我们在应用程序中使用导航抽屉来显示侧面菜单 在一些屏幕中 一旦用户尝试执行左 右手势 我们就不想显示此导航抽屉 因此 为此 我们试图隐藏特定的屏幕 手势 导航抽屉 但它不起作用 当用户滑动 左 右 时 抽屉仍然打开 const AppNav
  • 我的 iPad 应用程序会导致设备重新启动吗?

    我有一个 iPad 应用程序 它有一个下载大量地图文件 几千兆数据和数十万个文件 的过程 在我最近的测试版本中 设备有时会在下载过程中重新启动 下载可能需要几个小时 当应用程序重新启动时 它不会留下崩溃报告 我们在运行 4 3 3 的 iP
  • 将现场音频从线路输入路由到 AirPods?

    有没有办法将来自有线线路输入的音频直接路由到 AirPods 目前 我正在创建一个 playAndRecord音频会话 已配对 AirPods 后来 与AVAudioEngine我将输入设备直接连接到输出设备 engine connect
  • 从 R 调用时,Libreoffice 给出“应用程序错误”

    在 docker 容器内 我尝试使用 LibreOffice 将 XLSX 文件转换为 PDF 相关命令在命令行上运行 但从 R 调用时失败并显示 应用程序错误 我使用这个Dockerfile它添加了一些 根据我的经验任意 XLSX 文件
  • 多个 NSFetchedResultsController - didChangeObject

    我有一个UITableView其中使用 2NSFetchedResultsControllers Each NSFetchedResultsController只有一节 但是 该表有 4 个部分 我用其中一项的结果填充表的第四部分NSFet
  • 使用带有空格的 CMake 的 include_directories 命令

    我正在使用 CMake 来构建我的项目 并且有以下行 include directories LLVM INCLUDE DIRS 评估后LLVM INCLUDE DIRS 评估为 include directories C Program