2012-10-21 81 views
1

我想知道如何在Visual Studio 2012的屬性頁面中處理「繼承的值」。在我的項目中,我決定要使用預編譯頭文件,所以很自然地,我嘗試從清單上刪除擴展名列表中刪除* .pch。但是,事實證明,在我嘗試編輯此屬性時,它在許多其他擴展中列在只讀「繼承值」框中。Visual Studio 2012 - 一些'繼承的值'我想擺脫

'繼承父項目或項目默認值'不勾選,但沒有區別。當我清理解決方案時,我的.pch文件被刪除。

在此先感謝。

回答

2

如果使用傳統PCH語義設置PCH,則使用一個文件來生成PCH(通常爲stdafx.cpp),其餘源文件將從該創建中受益。如果是這種情況,那麼你正在經歷的是去除'創建者'源的.obj,迫使重建「發生器」.cpp文件,這意味着PCH也將被重建。PCH隱式地添加到「發電機」源的輸出目標,根據定義,當「清理」時,給定源目標的所有輸出目標都將被移除

換句話說,PCH正在重建,因爲生成它的源文件也正在重建,因爲清潔刪除生成的.obj對源文件

這是預期在乾淨的行爲,順便

+0

好;但.PCH文件是編譯器將是什麼因爲你已經擁有了把它改爲'使用/ Yu',對吧?我知道這是刪除這個文件的默認行爲,但是,如果我可以通過更改clean命令的默認行爲來阻止它被刪除,我的問題將得到解決? – Archimaredes

+1

您的設置是否如上所述?即你有一個源文件被標記爲「創建」,而其他標記爲「使用」?如果是這樣,那麼當創建者源被「清理」時,根據定義,PCH是過時的,因爲創建者必須重新編譯。我希望這是有道理的。將PCH標記爲未清除的清除將不會有任何效果,因爲生成它的源已經過時了其預期的目標(它是obj文件)。由於必須重建obj,並且創建它的源頭是PCH創建者,所以PCH也應該重建。 – WhozCraig

+0

對不起,我誤解了整個過程。我沒有正確設置它,現在查看了你的解釋,以及Visual Studio中包含的示例項目,我瞭解它是如何工作的。現在一切正常,謝謝解釋。 – Archimaredes