2011-10-19 132 views
7

我從Visual Studio生成預處理器輸出(.i),但也想做實際的生成。是否有組合的標誌會輸出.i文件,而不會停止編譯器繼續正常的構建?如何輸出預處理的代碼並編譯它(Visual Studio)

目前這只是C++,但稍後可能會希望將其用於CUDA,所以更喜歡在Visual Studio中工作而不需要命令行的答案(除非它也適用於CUDA)。

這樣做的關鍵是節省執行Project-> Properties-> Config Props-> C/C++ - > Preprocessor-> Generate Preprocessed File是/否加重建所需的時間。特別是對於我來說,預處理器必須運行兩次是非常令人討厭的,所以一個解決方案以某種方式在第一部分中生成.i文件,然後在第二部分中編譯該文件就沒有問題。

Visual Studio中我使用的準確版本是2008年VS快遞

+0

** VS 2088 Express ** cool! –

+1

@ K-ballo:VS2088非常酷。不幸的是,它非常昂貴,因爲您需要購買一臺時間機器才能獲得副本。 –

+0

@ K-ballo謝謝 – Raffles

回答

2

您可以添加自定義生成步驟或一個新的目標來轉儲預處理代碼定義建成後的拋投預處理器輸出是什麼建成。

+0

無論哪種方式,構建必須讀取文件兩次?但這是一個緩慢的部分! –

+0

自定義目標只要依賴於轉儲預處理器的目標,就可以構建* .i。 – rerun

+0

*眨眼*哇...這可能會工作,並可能生成一個更高效的文件,由於鏈接器知道更多... –

0

您可以創建一個自定義構建配置,進行預處理,然後定義一個批量構建,構建預處理版本,然後是實際編譯/鏈接版本。

+0

好吧,這聽起來很理想。通過「定製構建配置」,你的意思是前面的人提到的「定製構建步驟」?如果是這樣,這裏有一個不錯的進展:-) – Raffles

0

使用開關/ P CL例 -/C sample.c文件

上面將生成具有相同名稱(sample.I).i文件。現在要編譯.I文件,只需將.I文件重命名爲.C,然後執行cl/c編譯並生成一個目標文件。

相關問題