2011-09-21 93 views
0

我在一個樹上工作,它在任何我把它扔到的Unix機器上編譯得很好,但是Cygwin很困難,我不確定從哪裏開始。我有以下目錄結構:用cygwin編譯C++不提供包含路徑

buildwin/ 
|-- main.cpp 
|-- other project files 
|-- include/ 
    |-- tclap 
     |-- CmdLine.h 
     |-- other files (including CmdLine.cpp) 
    |-- eigen 
     |-- (appropriate files) 
    |-- rapidxml 
     |-- (appropriate files) 

當我嘗試編譯此,我從G ++得到以下錯誤:

$ g++ main.cpp -lglut32 -lglu32 -lopengl32 -Iinclude/eigen -Iinclude/rapidxml -Iinclude/tclap 
main.cpp:6:27: fatal error: tclap/CmdLine.h: No such file or directory 
compilation terminated. 

我知道這是尋找其他圖書館(eigenrapidxml)的罰款,因爲如果我刪除相應的包含標誌,它會拋出一個錯誤,說它找不到eigen或你有什麼。

的包括有問題的說法是:

// snip 
#include <Eigen/StdVector> 
#include <cmath> 
#include <iostream> 
#include <fstream> 

#include <tclap/CmdLine.h> 
// snip 

想法?謝謝!

回答

1

您指定的是-Iinclude/tclap,然後包含tclap/CmdLine.h,因此編譯器會尋找include/tclap/tclap/CmdLine.h

要麼使用-Iinclude,要麼包含CmdLine.h而沒有路徑。

+0

就是這樣!我最初單獨添加它們是因爲'eigen /'和'rapidxml /'目錄的結構需要它(本徵庫的實際根目錄在'include/eigen/eigen'處)。不過,包括include/eigen,include/rapidxml和include都起作用。謝謝! –

1

是否使用-Iinclude工作?您可能不需要明確添加include的子字符串,因爲您在#include語句中的名稱中引用它們。

+0

就是這樣! Upvoted,但另一個評論擊敗你一分鐘。謝謝! –