Frage

Ich versuche boost.wave als Prä-Prozessor anstelle des Prä-Prozessor zu verwenden, die mit dem Compiler kommt. Ich bin nicht in der Lage, herauszufinden, wie dies zu erreichen.

Ich bin mit CMake als Build-System Generator und wie kann ich meine Präprozessor angeben ist boost.wave. Dies sollte auf beiden Fenster (MSVC) und Linux (gcc) arbeiten.

googeln und suchen Archive Stack-Überlauf brachte keine Antwort


Compiler wird die Datei trotzdem vorverarbeiten. So sieht es aus wie zwei Schritte der Vorverarbeitung hier beteiligt ist.

War es hilfreich?

Lösung

Dies ist ein zweistufiger Prozess.

Als erstes musst du CMake sagen Welle als benutzerdefinierten Befehl zu verwenden: Verwendung CMake die add_custom_command . Sobald Sie diesen Befehl definiert es aufgerufen wird, wenn die Abhängigkeiten, die Sie für den benutzerdefinierten Befehl angegeben abgestimmt sind.

Zweitens, werden Sie, um herauszufinden, alle vordefinierten Makros und das (System) umfassen Pfade Compiler normaly verwendet. Welle nichts über einen bestimmten Compiler wissen. Daher wird, um eine Datei ordnungsgemäß für einen bestimmten Compiler alle (relevanten) vordefinierte Makros und alle Systempfade umfassen (die durch den Compiler vordefiniert werden normalerweise) vorzuverarbeiten (die dem Compiler standardmäßig normalerweise bekannt sind) werden müssen, geleitet, während rufenden Welle. Wenn setzen Zeilenbefehl die alle diese Optionen auf Welle zu langweilig ist (und es ist wahrscheinlich), können Sie eine Optionsdatei für Wave (fügen sie es mit @cfgfile auf der Kommandozeile). Hier ist ein Beispiel für 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

Natürlich können Sie hier andere Optionen für Wave als auch hinzufügen. verschiedene Konfigurationsdateien für verschiedene Compiler hat, sollte es einfacher machen, von innen CMake zu verwalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top