2017-04-12 79 views
0

我想運行構建步驟,查看.h文件,基於某些外部參數添加一些代碼,並將生成的文件交給預處理器。如何設置此Visual Studio(2015)自定義構建步驟(工具?)。基本上我想要一個修改頭文件的預處理器步驟(C++)

我在項目屬性中看到「自定義構建步驟」。它似乎需要一個輸出文件。我只是想將結果轉發給預處理器。

看起來自定義構建步驟想要執行1次處理,而不是按文件或按文件類型。

問題是我不知道如何發送我的外部可執行文件當前正在處理的文件(例如「HelloWorld.cpp」)。 $(InputName)和%(Filename)是空白的,文檔說它已被棄用。如何將文件名發送到我的外部可執行文件?

但即使我得到那個工作,我不想設置此每個文件。我希望所有的頭文件都經過這個過程。

任何想法?

我看:

https://msdn.microsoft.com/en-us/library/dd293663.aspx?f=255&MSPPError=-2147217396

https://msdn.microsoft.com/en-us/library/hefydhhy(v=vs.90).aspx

https://msdn.microsoft.com/en-us/library/ff770593(v=vs.140).aspx

工作在Windows上調試,64配置。

+0

我不認爲這會工作。 A * Build Step *就是這樣:它*構建*某些東西,即給定一些輸入文件,它構造*不同*文件。目的絕對不是修改現有文件。 (它可能會這樣做,但不是以可靠的方式。) – j6t

+0

在他們的示例中: lexer $(InputPath)。\ $(InputName).c 它們轉發當前正在構建的文件。 2015年的文檔說InputName已被刪除,但沒有其他選擇。有誰知道至少如何獲得正在處理的文件的名稱? – SolarisPol

回答

0

首先,不,您不能修改文件並將結果傳遞到下一個階段(我可以看到)。我需要某種Program Transformation System

所以我需要一箇中間文件。該文件必須添加到項目中,即使它被代碼生成器覆蓋。我可以將C++頭文件與一個自定義構建工具相關聯,並且它們都將在自定義構建步驟中指定的構建階段中逐個調用。自定義構建工具將修改中間文件,並且一切正常。

正在處理的當前文件的VS 2015名稱是%(文件名)。在較早的版本中,它是$(ProjectName)和$(InputName)。

相關問題