使用带有空格的 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 命令 的相关文章

  • VS 2015 命令提示符中不再找到 rc.exe

    我刚刚安装了 Windows 10 创意者更新 版本 10 0 15063 我安装了多个版本的 Visual Studio 2012 2013 2015 和 2017 我几周前才安装了 VS 2017 Problem CMake 版本 3
  • ld:警告:__DATA/__objc_imageinfo__DATA 节的大小意外地大

    有谁知道这个警告是什么意思 接下来是错误 Command Developer Platforms iPhoneSimulator platform Developer usr bin llvm gcc 4 2 failed with exi
  • 是否可以在 LLVM IR 代码中指定十六进制数?

    例如 error floating point constant invalid for type 3 and i8 0x80 2 从扫描的红外参考手册 http llvm org docs LangRef html simple cons
  • 无法安装 R 包:CMake 错误

    我正在尝试安装factoextra 但我在 CMake 部分遇到了困难 特别是出现如下错误 CMake Error The source directory tmp does not exist 当我尝试安装其依赖项时也是如此 nloptr
  • 使用 cmake 和 Visual Studio 的一个解决方案中的多个项目

    我有一个 Visual Studio 2010 解决方案 其中包含 5 个项目 两个库和三个应用程序 依赖于库 我现在想将构建系统迁移到 CMake 也能够在 Linux 下编译 我已经了解了如何为一个项目编写 CMakeLists txt
  • CMake 64 位和 SFML 64 位

    我正在尝试使用适用于 Windows 的 CMake 64 位和 SFML 2 5 1 64 位构建 C 项目 当我在项目上运行 cmake 时 我收到一条错误消息 我能让它工作的唯一方法是改变CMAKE PREFIX PATH指向 SFM
  • 如何重新安装最新的cmake版本?

    我想在Linux环境下安装cmake的最新版本 我安装了 cmake 3 5 版 但某些应用程序不支持 我尝试通过卸载当前版本来升级它 但是当我使用 sudo apt get install cmake 重新安装时 我重新安装了相同的版本
  • LLVM 尾调用优化

    以下是我对事情的理解 当函数 f 调用自身是其最后一个动作时 它是尾递归的 通过形成循环而不是再次调用函数 可以显着优化尾递归 函数的参数已就地更新 并且函数体再次运行 这称为递归尾调用优化 LLVM 在使用 fastcc GHC 或 Hi
  • 如何从 CMake 运行 .bat 文件?

    如何在预链接或构建后事件中从 CMake 运行 bat 文件 你可以使用add custom command e g if WIN32 add custom command TARGET
  • 为什么 CMake 没有检测到对我生成的文件的依赖关系?

    我正在尝试使用自定义命令生成标头 每次重建时都应更新标头 以便包含它的源文件也将被重建 实际命令是一个脚本 但这里是一个简化版本 这是我的项目 CMakeLists txt cmake minimum required VERSION 2
  • CMake:不要为链接中使用的单个库设置 rpath

    我想要做的是配置我的 CMakeLists 文件 以便在构建我的项目时 链接器使用驻留在我的构建树中的共享库 so 的副本来链接可执行文件 但不会在中设置 rpath链接的可执行文件 以便系统必须在加载程序请求时提供该库 具体来说 我想在构
  • CXX 编译器标识未知

    我们在使用 Visual Studio 2012 在 Windows 7 64 位下使用 CMake v2 8 12 编译项目时遇到问题 CMake 给我们提供了以下错误 我们已经尝试使用管理员权限从 Visual Studio 命令行启动
  • 来自库的 CMake link_directories

    我正在尝试使用 CMake 和 Xcode 从另一个库链接到一个库 这对任何图书馆来说都是一个问题 但为了让事情更容易传达 让我们使用zlib举个例子 这似乎适用于可执行文件 如下所示 LINK DIRECTORIES LIB DIR zl
  • 如何将脚本的依赖项添加到 CMake 中的目标?

    链接我的程序后 我需要对其执行一些后处理 我添加了一个add custom command TARGET 效果很好 但是 这个额外的自定义命令运行一个脚本 未生成 它已签入代码库 并且我希望如果该脚本发生更改 目标将被视为过时 以便正确重建
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c
  • 如何使用 Apache Arrow 在 Windows 上使用 C++ 编写 Parquet 格式的文件?

    我正在尝试使用 C 在 Windows 上编写 Parquet 文件 我按照我找到的说明进行操作here https github com apache arrow blob master docs source developers cp
  • wasm-ld:错误:初始内存太小,需要 18317952 字节

    我想将 ffmpeg 编译为 wasm 下载 FFMPEG 和 emsdk 源代码后 我使用下面的命令进行构建 emconfigure configure cc emcc enable cross compile target os non
  • 构建涉及 cmake 的项目,如何使其了解库

    当我尝试在 64 位 linux debian 机器上使用 cmake 和 gcc 构建此项目时 我从链接器中收到错误 Linking C executable cpsadamsx home dala lib64 libSimTKcommo
  • libSDL、CMake 和 Mac OS X Lion

    我正在尝试在我的Mac上编译cmake项目 但它取决于SDL框架 我安装了这个框架 在 cmake 之后向我报告找不到 libSDL 我自己设置了以下导出变量 按照 cmake 的建议 export SDL INCLUDE DIR Libr
  • pybind11:如何将 c++ 和 python 代码打包到一个包中?

    我正在尝试使用 CMake 和 pybind 11 将现有的 Python 代码和新的 C 11 代码打包在一起 我认为我缺少一些可以添加到 CMake 脚本中的简单内容 但在任何地方都找不到它 pybind11 示例只有 C 代码和没有P

随机推荐

  • 什么是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