2010-08-10 112 views
0

我的項目,我有物理文件的結構是這樣的:Visual Studio 2010中 - 在文件夾中的文件,而不../../Include.h

  • Source文件夾
  • 引擎
    • 文件夾1
    • 文件夾2

我在「源」的一些文件,有的在「引擎」,有的在「引擎/資料夾」等

我的項目,我已經全部設置 - >源目錄和包括Source,Engine,Engine/Folder2等。但是,當我試圖包含「Foo.h」或其他文件夾中的任何內容時,仍然無法找到文件。有沒有辦法做到這一點,所以我不必擁有../Folder1/在一切前面?

+0

我以爲它想要改變的包含路徑,而不是源目錄。 – 2010-08-10 10:44:14

+0

這很好,謝謝。 :P但是,我現在得到錯誤關於它找不到很多的源文件(仍然在源代碼目錄下)或'boost/shared_ptr.hpp'。 [我應該編輯我的問題嗎?] – 2010-08-10 10:48:21

回答

1

有沒有辦法讓它變成這樣我不必在../Folder1/在一切之前?

是的,有。答案取決於幾個因素,我相信我會錯過幾個。

檢查以下內容:

  • 在編譯器設置檢查 「附加包含」 下的 「C/C++」
  • 還檢查在 「VC++」 的值爲 「包含目錄」
  • 檢查設置對於「忽略標準包括路徑」中的「C/C++ /預處理器」
  • 檢查您的預編譯頭設置
  • 檢查「的#define」 /「和#undef」在您的源文件和編譯器設置
  • 檢查項目,可以使用或繼承

如果使用「foo.h中」(而不是< foo.h中>)預處理器會看在你的項目屬性表特定文件夾第一,在IDE特定的文件夾最後。如果您使用<foo.h>它首先從標準包含文件夾開始,例如那些標準運行時庫所需的。

當一個文件使用「../foo.h」時,它的路徑相對於包含該文件的文件的位置。可能會有棘手的例外。

還有很多事情可以影響預處理器如何找到它的包含路徑。如果您不確定預處理程序對特定文件所做的操作,則可以通過預處理器設置中的「Preprocess to a file」開關使預處理程序輸出可見。該文件顯示預處理器完成後以及編譯器開始工作之前文件的源代碼。

隨着更多的經驗,特別是文件夾/項目結構以及如何包含文件的清晰策略,整個事情變得更容易。例如,確保每個包含文件中的第一個非註釋行都有「#pragma once」。

我希望這給你幾個想法,爲下一步。祝你好運!

0

我認爲這是一個很好的做法:

  • 當包含文件路徑不要求使用」 ..‘使用相對路徑
  • 當需要使用’。 。「,使用絕對路徑(即相對於源文件的根文件夾)

對於絕對路徑的工作,將根源文件夾添加到包含目錄列表(相對於項目的文件位置) 。

相關問題