【问题标题】:Confirm location that .sublime-build is looking at (Sublime Text 3, C++) on Windows在 Windows 上确认 .sublime-build 正在查看的位置(Sublime Text 3,C++)
【发布时间】:2016-09-12 16:56:19
【问题描述】:

我在 Sublime Text 3 (ST3) 中有一个自定义 .sublime-build 文件,其中包含我希望它搜索 c++ 头文件的文件夹:

{
"cmd": ["g++", "$file_name", "-o", "${file_base_name}.exe", "-I C:/package/armadillo74002/include", "-L C:/package/armadillo74002/examples/lib_win64", "-lblas_win64_MT", "-llapack_win64_MT", "&&", "start", "cmd", "/c" , "$file_base_name"],
"selector": "source.c",
"working_dir": "${file_path}",
"shell": true
}

但是,当我运行脚本时:

#include <armadillo>

我收到以下错误:

headerex.cpp:2:21: fatal error: armadillo: No such file or directory

但我可以检查我的电脑并查看该文件是否存在于该目录中。为什么它给我这个错误?我可以更改什么以便它可以找到我正在寻找的头文件?

【问题讨论】:

  • IIRC C:package 从 C 的当前工作目录而不是根目录搜索。
  • @CaptainObvlious -- 抱歉,这是我输入问题时的错误。我已经编辑了我的问题以反映我的 .sublime-build 文件实际上是C:/package/...,而不是我的问题中指出的C:package/...。我仍然收到该错误。
  • 我对 C++ 了解不多,但是如果将 #include &lt;armadillo&gt; 更改为 #include "armadillo.h"(有或没有 .h)会怎样?据我了解,&lt; &gt; 尖括号中包含的是标准库中的文件,而" " 双引号中的那些包含在-I 选项传递的其他包含目录中。
  • @MattDMo -- 非常感谢您的帮助!虽然这并没有逐字回答我的问题,但这是我正在寻找的解决方案。 .sublime-build 正在寻找正确的位置,但由于某种原因,我需要使用 " " 而不是 &lt; &gt;。进行此更改使我能够成功致电armadillo。如果您想将此添加为解决方案,我会接受它作为我正在寻找的解决方案,并添加评论原因。

标签: c++ sublimetext3 sublime-build


【解决方案1】:

我并不熟悉所有的术语,因为我的 C/C++ 编码经验有些有限,但据我了解,#includes 有两种类型。第一种类型,头文件名包含在尖括号 &lt; &gt;#include &lt;stdio.h&gt;#include &lt;string.h&gt; 等)中,表示您包含标准库中的头文件。

第二种类型,其中包含的文件用双引号" "#include "Python.h"#include "myheader.h" 等)括起来,用于包含在 Makefile 或命令行中指定位置的任何其他头文件使用-I 选项(至少对于gcc)。也可以显示子目录 - 例如,如果您传递 -I/usr/local/include/mylib/include 选项,那么如果原始目录中有子目录,您的 include 语句可能是 #include "x86_64/myheader.h"

请参阅What is the difference between #include <filename> and #include "filename"? 以获得更好的解释。

由于armadillo 听起来不像是标准库的一部分,并且您在命令行上传递了它的位置,因此用双引号替换尖括号并查看是否是一个好主意诀窍。

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多