2011-08-26 84 views
0

我有一個VS2008 makefile項目,並希望將某些預處理器定義(#define)(如硬件設置)傳遞給外部工具。有沒有辦法將C-PreProcessor定義傳遞給外部工具作爲宏?

有沒有簡單的方法來做到這一點?除了有一箇中間腳本讀取信息的.h文件並將它們傳遞給該工具。

類似:

在.h文件中您有: #define HARDWARE_ADDRESS 0xBEEF

,並呼籲extrnal工具: program_firmware.exe $(的TargetName)HARDWARE_ADDRESS

,而不是: program_firmware。 exe $(TargetName)0xBEEF

+1

你能解決問題嗎?創建一個名爲$(HardwareAddress)的項目屬性並將其設置爲0xBEEF,然後在調用cl時定義HARDWARE_ADDRESS = $(HardwareAddress)? –

+0

我無法修改.h文件和#defines,因爲它們是由應用程序構建器自動生成的(與編譯器構建文件不同,它與Make不同)。但是,如果可以在makefile項目中創建自定義項目屬性,我可以使用vs宏來填充它們並從宏中調用外部工具。 – MandoMando

回答

2

您可以將定義移動到makefile:

 
h_address=0xBEEF 
program_firmware.exe $(TargetName) $(h_address) 
CL /DHARDWARE_ADDRESS=$(h_address) TEST.C 

將相同的h_address值傳遞給program_firmware.exe和C編譯器。

+0

查看關於該問題的評論。此外,將program_firmware.exe調用放在每個編譯時都會運行它,這不是我們想要的。 – MandoMando

+0

如果你的問題僅限於某些特定的宏,編寫一個小程序並不難。這種工具不需要像C預處理器那樣複雜。 –

+0

謝謝亞歷克斯。那麼這將是我試圖避免的middlescript。我結束了使用AWK提取值並組裝適當的命令行的shell腳本。我猜,Windows PowerShell可以做同樣的事情。 – MandoMando

相關問題