首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有空格的CMake的include_directories命令

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

Stack Overflow用户
提问于 2012-04-01 13:31:50
回答 2查看 6K关注 0票数 5

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

代码语言:javascript
复制
include_directories(${LLVM_INCLUDE_DIRS})

在评估LLVM_INCLUDE_DIRS之后,评估结果为:

代码语言:javascript
复制
include_directories(C:\Program Files\LLVM\include)

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

你知道我该怎么解决这个问题吗?我试过用引号,但没有用。

编辑:--原来问题在文件llvm-3.0\share\llvm\cmake\LLVMConfig.cmake中。我附上下列带有引号的路径,并解决了问题:

代码语言:javascript
复制
set(LLVM_INSTALL_PREFIX C:/Program Files/LLVM)
set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include)
set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-01 14:09:05

在设置LLVM_INCLUDE_DIRS时,这更可能是一个错误,而不是include_directories的问题。

要检查这一点,请尝试调用include_directories("C:\\Program Files\\LLVM\\include") -它应该正确工作。

问题似乎是LLVM_INCLUDE_DIRS是在没有使用引号的情况下构建的。例如,尝试运行以下命令:

代码语言:javascript
复制
set(LLVM_INCLUDE_DIRS C:\\Program Files\\LLVM\\include)
message("${LLVM_INCLUDE_DIRS}")
set(LLVM_INCLUDE_DIRS "C:\\Program Files\\LLVM\\include")
message("${LLVM_INCLUDE_DIRS}")

产出如下:

代码语言:javascript
复制
C:\Program;Files\LLVM\include
C:\Program Files\LLVM\include

注意第一个输出行中的分号.这是一个包含两个项目的列表。

因此,解决这个问题的方法是修改创建LLVM_INCLUDE_DIRS的方式。

票数 4
EN

Stack Overflow用户

发布于 2012-04-02 08:39:22

在CMake中,

  • 空格是一个列表分隔符(如;),计算变量名的
  • 基本上用它的内容替换变量名--

是一个转义字符(为了获得符号,也需要转义)

因此,在您的示例中,include_directories(C:\\Pogram Files\\LLVM\\include)

代码语言:javascript
复制
include_directories( C:\\Program;Files\\LLVM\\include)

也就是说,一个包含两个项目的列表。为了避免这种情况

  • 也避开了空格:

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

  • 用引号包围路径:

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

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

  • 更简单、更容易阅读,
  • 可以与变量计算一起使用,就像在您的示例中一样(因为计算结果随后被引号包围,因此,处理单个项)

include_directories("${LLVM_INCLUDE_DIRS}")

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9964775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档