Domanda

Sto cercando di usare il boost.onda come un preprocessore invece del preprocessore che viene fornito con il compilatore.Non riesco a capire come ottenere questo risultato.

Sto usando CMake come il sistema di generazione del generatore e come posso specificare il preprocessore è spinta.onda.Questo dovrebbe funzionare sia su windows (MSVC) e linux (gcc).

Google e la ricerca di Overflow dello Stack archivi non ha dato alcuna risposta


Compilatore comunque pre-elaborazione dei file.Così sembra che due passaggi di pre-elaborazione è in questione qui.

È stato utile?

Soluzione

Questo è un processo in due fasi.

Per prima cosa, dovrete dire CMake per utilizzare Onda come un comando personalizzato:utilizzare CMake s add_custom_command.Una volta definito questo comando verrà eseguito ogni volta che le dipendenze specificato per il comando personalizzato sono abbinati.

In secondo luogo, è necessario capire tutte le macro predefinite e il (sistema) percorsi di inclusione compilatore normalmente utilizza.Onda non sapeva nulla di un compilatore specifico.Pertanto, al fine di pre-elaborazione di un file correttamente per un particolare compilatore tutti (rilevanti) macro predefinite (che normalmente sono predefiniti dal compilatore) e di tutto il sistema di percorsi di inclusione (che sono di solito nota per il compilatore di default) devono essere passati, mentre invocando Onda.Se mettere tutte quelle opzioni sull'Onda della riga di comando è troppo noioso (e probabilmente lo è), è possibile creare un file opzioni per il Wave (aggiungere alla riga di comando con @cfgfile).Qui è un esempio per 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

Certamente, è possibile aggiungere altre opzioni per il Wave anche qui.Avendo diversi file di configurazione per diversi compilatori dovrebbe rendere più facile da gestire dall'interno CMake.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top