2010-12-10 46 views
0

J'essaie d'utiliser boost.wave en tant que préprocesseur à la place du préprocesseur fourni avec le compilateur. Je suis incapable de comprendre comment y parvenir. J'utilise CMake comme générateur de système de construction et comment puis-je spécifier mon préprocesseur est boost.wave. Cela devrait fonctionner à la fois sur Windows (MSVC) et linux (gcc).Comment puis-je utiliser boost.wave comme préprocesseur en utilisant cmake

googler et la recherche Stack archives Débordement n'a donné aucune réponse


compilateur de toute façon prétraiter le fichier. Il semble donc que deux étapes de pré-traitement sont impliquées ici.

Répondre

2

Il s'agit d'un processus en deux étapes. Tout d'abord, vous devrez indiquer à CMake d'utiliser Wave en tant que commande personnalisée: utilisez la commande add_custom_command de CMake. Une fois que vous avez défini cette commande, elle sera appelée chaque fois que les dépendances que vous avez spécifiées pour la commande personnalisée sont mises en correspondance. Deuxièmement, vous devrez trouver toutes les macros prédéfinies et les chemins d'accès (système) que votre compilateur utilise normalement. Wave ne sait rien sur un compilateur spécifique. Par conséquent, afin de prétraiter correctement un fichier pour un compilateur particulier, toutes les macros prédéfinies (pertinentes) (qui sont normalement prédéfinies par le compilateur) et tous les chemins d'inclusion système (normalement connus du compilateur par défaut) doivent être passés lors de l'invocation Vague. Si mettre toutes ces options sur la ligne de commande de Wave est trop fastidieux (et c'est probablement le cas), vous pouvez créer un options file pour Wave (ajoutez-le à la ligne de commande avec @cfgfile). Voici un exemple pour 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 

Certainement, vous pouvez également ajouter d'autres options pour Wave ici. Avoir différents fichiers de configuration pour différents compilateurs devrait faciliter la gestion depuis CMake.