2011-01-06 67 views
4

是否有任何文章或建議如何組織文件層次結構在您的項目?我感興趣的是如何命名文件夾,以分離源代碼和頭文件。項目文件的樹

我有用C++編寫的項目,一個庫和使用它的項目。庫有許多組件,它們彼此分離,但其中一些使用通用文件。我應該爲他們創建目錄嗎?

我很樂意聽到所有建議。

+1

看看助推組織。這很合理。 – 2011-01-06 20:18:21

+0

重複這個? http://stackoverflow.com/q/1398445 – greyfade 2011-01-06 20:19:20

回答

3

將名稱空間保存在單獨的文件夾中很好。嵌套名稱空間的方式與它們嵌套在項目中的方式相同。舉例來說,如果您有:

namespace Foo{ namespace Bar{ } } 

,那麼你會希望在Bar命名空間中的任何對象在

{Foo's parent folder}\Foo\Bar\{how you're organizing code at this level}

找到我們使用的包括頭文件夾,一個來源。 cpp,單元測試的測試文件夾,以及編譯碼位的對象文件夾。我們將它們分開的原因是它可以更輕鬆地將代碼打包到我們的腳本中。你總是會傳遞標題,你不會傳遞來源。 (Here是另一個SO線程討論分隔標題/源文件,這是一個偏好的事情。)

這是一個link谷歌的風格指引,如果有幫助。

6

不要將標題和源文件拆分到不同的文件夾中。它只不過是添加一個額外的文件夾級別。

充其量它是完全無用的;如果您正在尋找「widget.h」,即使旁邊有一個「widget.cpp」,也可以輕鬆地找到它。最糟糕的是它會相反的 - 例如當你編輯「widget.h」時,發現你還需要更新「widget.cpp」。

+2

是的。特別是因爲文件列表通常按字母順序排序,所以`widget.cpp`應該緊挨着它的對應部分。 – Maxpm 2011-01-06 20:09:18

2
  • 我沒有單獨的頭從源頭:它的瀏覽
  • 一個痛苦,我通常有子目錄符合我的命名空間

    + Project root 
        + <project_name> // namespace project 
         - sub_dir_1 // namespace project::sub_dir_1 
         - sub_dir_2 // namespace project::sub_dir_2 
    
  • 我只添加「項目的根」作爲一個附加包括路徑,所以包含格式爲:

    #include "project/sub_dir_1/a.h" 
    #include "project/sub_dir_2/b.h" 
    
  • 因爲源和標頭通常根據它們所包含的類命名,全合格命名可以從包括路徑推斷:

    project::sub_dir_1::aproject/sub_dir_1/a.h

  • a.c發現平凡包括a.h

  • 如果我必須(相對提供的路徑)包括a.hb.h,我使用絕對路徑(從project/根開始)