2013-03-27 56 views
0

自從將X ++ 3.2.6的C++項目升級到Xcode 4.5.1以來,我有過最奇怪的#include文件問題:#include頭文件我的一個靜態鏈接庫無法找到。整個項目中我沒有其他未定義的符號錯誤。Xcode#包含從3.2.6更新到4.5.1之後的文件問題

#包括位於一個前綴頭,「MacClient_Prefix.pch」(我不是預編譯頭):

#include "Framework/Base/BaseEnvironment.h" 

這個頭文件(BaseEnvironment.h)位於AA完全不同的文件夾層次與靜態鏈接庫有關。

的錯誤:

/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/WordMenuBaseEnv.h 
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/WordMenuBaseEnv.h:26:10: 'Framework/Base/BaseEnvironment.h' file not found 
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/<built-in>:148:2: In file included from <built-in>:148: 
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/<command line>:4:10: In file included from <command line>:4: 
/Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/MacClient_Prefix.pch:9:10: In file included from 
    /Users/StephenDev/Documents/dev/WordMenu/Projects/MacClient/Xcode/MacClient_Prefix.pch:9: 

我相當肯定的用戶頭文件路徑是否正確設置項目。

奇怪的是,如果我註釋掉#include,那麼我會從代碼的其餘部分得到幾百個實際的錯誤,用於丟失符號。很顯然,當使用前綴頭文件編譯項目文件時,會找到文件。

我甚至試圖明確指定#include中頭文件的完整路徑,但是破壞了包含項目構建的其餘部分。

我在構建選項中包含路徑是項目相對的,我認爲這可能與此問題有關。問題可能與衍生數據或中間體的包含路徑有關嗎?

包含在具有錯誤的「main」項目中的靜態鏈接庫的生成項目確定頭文件爲「public」。但是,主要項目的乾淨構建/重建不會(現在)似乎重新構建靜態鏈接庫。

回答

1

奇怪的是,如果我註釋掉#include,那麼我就會從代碼的其餘部分得到數百個實際的錯誤符號。很顯然,當使用前綴頭文件編譯項目文件時,會找到文件。

#include錯誤是致命的,因此編譯器將不會繼續顯示所有由於缺少#include而導致的錯誤。

#include <foo> 
There's no way this is legal C++... 

結果:

main.cpp:1:10: fatal error: 'foo' file not found 
#include <foo> 
     ^
1 error generated. 

,有沒有其他的錯誤並不意味着第二線被認定爲無效的C++代碼的事實。

+0

你是對的,但我仍然不確定爲什麼我找不到文件 - 它好像應該沿着我指定的路徑。 – SMGreenfield 2013-03-27 22:22:49

+0

應該有一個標記可以添加到編譯器中,以便它可以告訴您搜索的路徑以幫助您調試。我現在不記得它。 – bames53 2013-03-27 22:27:11

+0

謝謝 - 這是問題所在。用戶包含的路徑被關閉了一個「/ ..」,並掩蓋了所有其他錯誤消失的事實。我沒有找到這面旗幟 - 在未來知道它會很高興。 – SMGreenfield 2013-03-28 00:00:17