2016-11-25 34 views
1

你能否通過回答我關於Visual Studio包含行爲的以下問題來幫助我?如何在Visual Studio中處理括號形式的include指令?

我創建了一個新的C++項目,它引用了一個已經存在的項目,其源文件不應該被修改。我結束了以下文件 結構:

-MyProject 
+---MyProject.sln 
+---MyProject.vcxproj 
+---MyProject.cpp 
+---CommonHeader.h 

-ExistingProject 
+---project 
+---+---ExistingProject.vcxproj 
+---source 
+---+---ExistingProject1.h 
+---+---ExistingProject2.h 
+---+---ExistingProject1.c 
+---+---ExistingProject2.c 

在開始的時候,我甚至不能編譯ExistingProject。內ExistingProject1.c,下面包括語句存在:

#include <ExistingProject1.h> 

here我瞭解到,在該情況下支架,包括Visual Studio中並不在同一目錄中查找頭作爲一個包含文件包含聲明。因此,我的第一個問題是:

1)這是真的,那我必須添加」 ../source/"-Directory到ExistingProject.vcxproj的包含目錄,雖然頭文件已經添加到Visual Studio項目?

要使用ExistingProject的結構和功能,我必須在我的MyProject.cpp中包含ExistingProject2.h。但在ExistingProject2.h中,同樣包括聲明

#include <ExistingProject1.h> 

存在。這導致了我的第二個問題:

2)這是真的,那我必須添加」 ../ExistingProject/source/-Directory到MyProject.vcxproj項目包含目錄以及

現在來真是個奇怪的問題。如果某個定義設置,它必須被內MyProject的設置,則ExistingProject2.h還包括通過

#include <CommonHeader.h> 

外部頭文件,它必須由被定義依賴項目,這導致了我的最後一個問題重複:

3)是真的,我只有以下兩個選項來編譯這個外部頭文件?

  1. 我有我的CommonHeader.h複製到 「ExistingProject \源\」 - 結帳時目錄。
  2. 我必須將「。」 - 目錄添加到MyProject.vcxproj項目的Include Directories中,並且我必須將「../../MyProject/"-Directory」添加到ExistingProject.vcxproj的Include目錄中。

第二個選項是沒有意義的。第一個真的是我唯一的選擇來處理這個括號形式包括外部頭文件嗎?

並且:至少應該位於vcxproj文件旁邊的位置,位於該項目中使用的頭文件的包含目錄中?

對不起,愚蠢的拼寫。我是一個非常糟糕的解釋者。 祝大家週末愉快。

回答

-1

在標準的C和C++中,#include <>是爲包含標準庫,編譯器在包含目錄中搜索的。 #include ""適用於你自己的文件,是的,它們是相對於.c或.cpp文件的目錄。

我現在在手機上,如果您需要它,我可以稍後編輯更多擴展的答案。

+0

非常感謝您的回答。 – Allgaeuer

0

當您放入#include <header.h> - Visual Studio將在項目設置中的所有指定包含路徑中搜索它,這包括Windows SDK和標準庫駐留的默認路徑。看到這個截圖,因爲例如:nclude

如果你把C:\path1\path2包括目錄,你可能最終使用#include <..\path1.h>

#include "quotes.h"的情況下 - Visual Studio將搜索只在項目目錄中的文件,在這裏您存儲文件。如果您將其他文件放在項目的某些子文件夾中 - 您總是需要指定相對路徑(如#include "subfolder\header.h")。

讓我知道,如果你需要進一步澄清這一點。

+0

非常感謝您的回答。 – Allgaeuer

+0

@Allgaeuer不要忘記上\接受答案,如果它可以幫助你 – Starl1ght

+0

我剛剛編輯了我的第三個問題,因爲僅僅添加「。」 - Directoy到MyProject.vcxproj的包含目錄是不夠的。你可以再看一下嗎? – Allgaeuer

相關問題