2010-12-10 75 views
0

我正在嘗試使用boost.wave作爲預處理器,而不是預編譯器附帶的編譯器。我無法弄清楚如何實現這一點。如何使用boost.wave作爲使用cmake的預處理器

我使用CMake作爲構建系統生成器,我如何指定我的預處理器是boost.wave。這應該在windows(MSVC)和linux(gcc)上工作。

谷歌搜索和搜索堆棧溢出檔案沒有取得任何答案


編譯器將反正預處理文件。所以看起來這裏涉及預處理的兩個步驟。

回答

2

這是一個兩步過程。

首先,您必須告訴CMake將Wave用作自定義命令:使用CMake的add_custom_command。一旦你定義了這個命令,只要你爲自定義命令指定的依賴關係匹配,它就會被調用。其次,你必須找出所有預定義的宏和你的編譯器正常使用的(系統)包含路徑。 Wave不知道關於特定編譯器的任何信息。因此,爲了對一個特定的編譯器正確地預處理文件,所有(相關的)預定義的宏(通常由編譯器預定義)以及所有系統包含路徑(編譯器通常已知的路徑)需要在調用時傳遞波。如果將所有這些選項放到Wave的命令行上過於乏味(可能是),則可以爲Wave創建一個options file(將其添加到@cfgfile的命令行中)。以下是MSVC 2005的示例:

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include 
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include 
-D_MT 
-D_MSC_VER=1400 
-D_MSC_FULL_VER=140050727 
-D_MSC_EXTENSIONS 
-D_M_IX86 

當然,您也可以在此處添加Wave的其他選項。爲不同的編譯器配置不同的配置文件應該可以更容易地從CMake內部進行管理。

相關問題