2016-09-12 47 views
0

Sublime Text 3(ST3)中有一個自定義的.sublime-build文件,其中包含我希望它搜索C++的文件夾頭文件:在Windows上確認.sublime-build正在查看的位置(Sublime Text 3,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 

但我可以檢查我的電腦,看到該文件存在於該目錄中。爲什麼它給我這個錯誤?我可以更改什麼,以便它可以找到我正在查找的頭文件?

+0

IIRC'C:package'從C的當前工作目錄搜索,而不是根目錄。 –

+0

@CaptainObvlious--抱歉,我輸入問題時出錯。我編輯了我的問題,以反映我的.sublime-build文件實際上是'C:/ package/...',而不是我的問題中指出的'C:package/...'。我仍然遇到這個錯誤。 – AaronJPung

+0

我不知道有關C++的大量數據,但是如果將'#include '更改爲'#include「armadillo.h」(帶或不帶'.h')怎麼辦?根據我的理解,'< >'中的尖括號用於標準庫中的文件,而''「'雙引號中的文件位於'-I'選項所傳遞的其他包含目錄中。 – MattDMo

回答

1

我不熟悉所有的術語,因爲我在C/C++中的編碼經驗有限,但我的理解是有兩種類型的#include s。第一種類型,其中頭文件名被括在尖括號< >#include <stdio.h>,#include <string.h>等)中,表示您包含標準庫中的頭文件。

第二類型,其中包含的文件是由雙引號" "#include "Python.h"#include "myheader.h"等)包圍,爲包括任何其他頭其位置在Makefile或與-I選項在命令行上被指定(至少對於gcc)。也可以顯示子目錄 - 例如,如果您通過-I/usr/local/include/mylib/include選項,則如果原始目錄中有子目錄,則包含語句可能爲#include "x86_64/myheader.h"

請參閱What is the difference between #include <filename> and #include "filename"?以獲得更好的解釋。

由於armadillo聽起來不像它是標準庫的一部分,而且你在命令行上傳遞它的位置,所以用雙引號替換尖括號可能是個好主意,招。

相關問題