2011-09-18 99 views
0

我來自Java/AS3/Javascript背景,我的所有類都組織成可幫助表示其功能的包。文件系統上的C++組織

在開始一個C++項目時,我試圖以大致相同的方式來模仿這個文件系統結構,但是我一直在考慮include的問題。

目前我有一個src目錄,裏面有main.cpp文件。然後我有一些根目錄和裏面的其他文件。這裏有一個例子:

SRC

- > main.cpp中

- >窗口

---->在window.h

----> Window.cpp

main.cpp包含Window.h,語句爲#include「Window.h」,一切都很好。但是,如果我重新啓動Visual Studio,它會抱怨它找不到「Window.h」。

在尋找一個開源項目,我看到一些只是在一個目錄中沒有嵌套的所有源文件,以方便包括我想。有些將頭文件和cpp文件分開。

在文件系統上組織一個大型的C++項目的正確方法是什麼(或者至少會導致更少的麻煩)?

謝謝!

+0

您的目標是合理的。您只需要爲項目正確設置包含路徑。 如果您有一個包含多個文件夾的項目,您應該可以執行'#include Window \ window.h' – Chad

+1

「Window.h」!= 。引號意味着,他有項目頭文件名爲「窗口」,而不是Windows頭文件。 –

+0

對不起,可能可以使用一個不太令人困惑的例子。 Window.h和Window.cpp是我爲包裝Window功能所做的自定義類。 Window.h包含用於訪問MS Windows代碼的。 – Jon

回答

1

像你試圖做的那樣分手是合理和容易完成的。

您只需要設置項目的包含路徑。從Visual Studio中,右鍵單擊項目名稱,然後單擊「屬性」。從那裏,在左側的樹形控件中,展開「C/C++」,然後在樹中選擇「常規」。右側的第一個選項應該是「其他包含目錄」。

有你有幾種選擇:

您可以指定特定的include目錄(用分號分隔)。舉例來說,如果你有文件夾「窗口」和「打印」你可以把在:

..\Window;..\Printing

這樣可以讓你輕鬆地包括窗口和打印文件,像這樣:

#include <Window.h>  // from src/window 
#include <Printing.h> // from src/printing 

上述方法有一些缺點,因爲您可能很容易與您可能正在使用的其他庫中的名稱發生衝突,因此使include命令非常重要。

一個更好的方法(在我看來)是增加以下內容作爲一個包含路徑:

..\

這將使搜索的父目錄尋找包括當。這可以讓你在包含路徑中更加詳細,如下所示:

#include <Window/Window.h>  // it's more clear where these are coming from 
#include <Printing/Printing.h> // and much less likely to collide with other library 
           // header files 
+0

謝謝!這有助於解決找不到文件的問題。 – Jon

+0

沒問題。更改這些值時的警告快照,默認情況下,只會針對當前活動的平臺(x64,x64等)和配置(調試,發佈等)更改它們。更改這些選項時,您可以指定多個配置/平臺等。 – Chad

0

遵循Java示例並通過C++名稱空間排列源文件是有意義的。在您的/src目錄下創建與命名空間相對應的子文件夾。