首先,這是個歷史遺留問題,提及來比較複雜。其次,這個問題在微軟的MSDN博客上已經專門被提及過了,英文好的請直接移步到原文:《VC++ Directories》。另外,stack overflow上面也有人問到過,可是首選回答的人回答是錯的,由於他沒看 《VC++ Directories》,主要看後面的這段:ide
VC++ Directories: Include Directories
- this value is inherited from the
INCLUDE
Windows environment variable which is defined outside of Visual Studio
- environment variables can be: global to the computer or have user level scope
- The
INCLUDE
andLIB
environment variables are created when the Microsoft Windows SDK is installed with Visual Studio.C/C++: Additional Include Directories
- is a project level setting... you will have to define this value for every project in your solution
- this value can be persisted to source control
好了,若是你英文很差,那麼仍是聽個人這個二手貨吧。this
VC++ Directories原本是對應於SDK的,他的變量是一個Windows環境變量,就和你在操做系統的控制面板裏面添加的環境變量是同樣的,好比這也有PATH,這個PATH和你在控制面板裏面的PATH是同樣的。可是,畢竟這個是用於搞開發的一些環境變量,因此呢,就把它搞到繼承開發環境裏面來設置了,這樣你就能夠不用在操做系統的控制面板裏設置他們,並且這些環境只在VS中有效。操作系統
而C/C++中的設置呢,它不是設置環境變量,它是設置命令行參數的,因此你能夠很清晰的看到,它還有一個Command Line設置項,這個項分兩塊,上面是根據你前面填寫項的指生成的,好比你的Additional Include Directories設置,就會對應到 /I [path]上面來,下面有個叫Adittion Option的框框,是供你填一些上面沒有的或者其餘須要補充的命令行參數的。既然是命令行參數,那確定是針對當前這個工程的了。命令行
原本一切已經很明確了:「VC++目錄」影響全局,只要是電腦上的這個VS建立的工程,都會被這個設置影像到; 而C/C++隻影響到單個的工程,一個工程一個C/C++。code
可是怪就怪在,微軟以爲這種全局的方式太粗暴了,因此在VS2010以後,「VC++目錄」變得也隻影響單個工程了,並且還只能在工程上右鍵「屬性」才能大概,以表示它是屬於這個工程的。在VS2008中,這個設置還能夠從Tools菜單中打開。因此,在VS2010以後,這兩者就變成沒區別了。blog
可是真的沒區別了嗎?呵呵,區別大了(奔潰。。。)繼承
前面已經說過了,VC++ Directories是一個Windows環境變量,C/C++是命令行參數,這是本質區別;可是相同的項,也就是VC++ Directories中的include directories 對應到C/C++中的addition include directories 是同樣的效果,也就是說效果同樣。一樣是命令行參數的還有Link設置,Link設置中的 addition library directories對應到VC++ Directories 中的library directories,也就是說,效果是相同的。開發
總之,很坑爹。。。博客