2

J'utilise VS2008 et je développe des projets C/C++. J'utilise le fichier .bat pour construire mes projets à partir de la ligne de commande (invite de commande VC2k8). J'ai besoin d'un moyen d'inclure dynamiquement la directive preprossor au moment de la construction. J'utilise devenv pour construire à partir de la ligne de commande.Ajout dynamique d'une directive de préprocesseur à partir de la ligne de commande VS2008

>devenv my\project\path\myproject.sln /build release > logs\build.log 

En fait, je veux définir une définition de macro basée sur un paramètre de ligne de commande pour le fichier de commandes. Je peux garder deux fichiers .vcproj différents, mais cela pose problème pour conserver plusieurs fichiers project/sln. Mon fichier batch serait quelque chose comme ça ...

if (condition) 
#define MYPROC_ENABLE_MYMODULE "yes" // To be included in the project. 
else 
#define MYPROC_ENABLE_MYMODULE "no" 

Toute aide serait vraiment apprécié.

Merci.

Répondre

1

Une option serait de mettre the CL environment variable, en utilisant quelque chose comme:

set CL=/DMYPROC_ENABLE_MYMODULE 

Le compilateur C++ (cl.exe) ajoutera le contenu de la variable d'environnement CL à sa ligne de commande lors de son exécution.

Je sais que vous pouvez définir des macros si vous construisez en utilisant msbuild, mais je ne suis pas sûr que vous pouvez faire la même chose en utilisant devenv directement.

+0

Est-ce que devenv/msbuild prendrait si une reconstruction serait nécessaire? Dites que vous construisez avec les options de projet par défaut, puis réglez 'CL' et reconstruisez. Serait-il reconstruire l'ensemble du projet? Ou devez-vous nettoyer et construire explicitement? –

+0

@the_mandrill: C'est une bonne question qui serait probablement mieux traitée par quelqu'un de plus expérimenté avec VCBuild. Je suppose que les reconstructions devraient être traitées correctement, mais encore une fois, je ne suis pas sûr. –

+0

Merci beaucoup James. Ça fonctionne bien pour moi. – Muthukkumaran

1

Vous pouvez effectuer différentes configurations pour votre solution et définir différents indicateurs de préprocesseur pour les différentes configurations. Ensuite, vous devez simplement sélectionner la configuration sur la ligne de commande et pas besoin de plusieurs fichiers de solution ou de projet.

+0

Cette solution fonctionne mieux si vous n'avez pas beaucoup de projets à synchroniser et que vous n'avez pas besoin de nombreuses sortes de configurations. Sinon, l'option de James est plus flexible. –

+0

@the_mandrill Oui vous avez raison, vous vous retrouvez dans un problème combinatoire si vous aviez un tas de différents drapeaux que vous vouliez être en mesure de définir indépendamment. Vous auriez à trouver des noms de configuration pour chaque combinaison unique de drapeaux que vous vouliez utiliser. Mais pour quelque chose de plus simple, je pense que le meilleur support d'outil ferait des configurations le meilleur choix. – bshields

+0

Il aurait cependant l'avantage de s'assurer que le projet serait reconstruit correctement. Donc je suppose que le choix de l'une ou l'autre de ces méthodes dépendra des exigences individuelles. –

Questions connexes