web-dev-qa-db-fra.com

Visual Studio: comment créer un projet qui compilerait 2 fichiers exe?

J'ai donc main.cpp et main2.cpp avec int principal dans chacun. Je veux obtenir 2 exes de celui-ci. Est-il possible et quelles seraient les instructions pour créer un tel projet?

24
Rella

Non, le modèle de projet de Visual Studio est construit de manière rigide sur l'hypothèse selon laquelle "un projet génère un seul résultat".

Si vous avez besoin de deux exécutables, vous devez créer deux projets. Vous pouvez les garder dans la même solution pour vous simplifier la vie, mais ils doivent être des projets distincts.

Modifier
Bien, comme d’autres réponses l’ont souligné, cela peut être fait, si vous êtes désespéré. Vous pouvez ajouter une étape de construction personnalisée, qui fait tout ce que vous voulez, y compris la construction d'un autre exécutable. (Cependant, le système de compilation ne comprendra pas que ce fichier doit être considéré comme une sortie de projet. Certains scénarios peuvent donc échouer: par exemple, le fichier ne sera pas automatiquement copié dans le dossier de sortie et lors de la vérification des dépendances avant une reconstruction, pourrait ne pas être en mesure de comprendre quels fichiers vérifier et quoi (ou comment) reconstruire.)

Visual Studio (au moins jusqu'en 2008, pas sûr de 2010) autorise également l'utilisation de fichiers nmake, mais je pense que vous étendez la définition de "projet Visual Studio".

Mais dans des circonstances "normales", un projet implique un résultat. Et pour obtenir deux exécutables, vous devez normalement créer deux projets.

26
jalf

Vous avez besoin d'une solution qui comprend deux projets . Lisez la documentation de Visual Studio sur les solutions et les projets.

15
David Heffernan

Voici ma solution, car personne dans une recherche Google ne semble suggérer cette méthode. C'est assez simple et je l'ai utilisé/vu utilisé dans d'autres IDE (comme Code :: Blocks).

Dans votre projet, créez une configuration pour chaque sortie souhaitée. Ensuite, n'incluez qu'un seul fichier source main dans chaque configuration.

Dans VS, cela signifie que pour chaque fichier source avec main: cliquez avec le bouton droit de la souris sur -> Propriétés -> Exclus de la construction = Oui. Ainsi, une fois que vous avez terminé, une seule source main est générée pour chaque configuration. Vous pouvez ensuite spécifier une sortie différente pour chaque configuration dans les propriétés du projet. Je l'ai fait sur VS 2010, mais cela devrait probablement fonctionner avec d'autres versions.

J'utilise cette approche pour pouvoir effectuer plusieurs tests pour un projet sans encombrer la solution de davantage de projets de test que de projets de code réels.

6
Electo

Je ne sais pas si cela peut être fait, mais le seul changement que vous avez, pour ce faire, est avec étape de construction personnalisée.

EDIT: Depuis que quelqu'un a voté contre cela, j'ai fait un test pour créer une configuration factice.

Dans le étape de construction personnaliséeI, deux Link-cmds (copiés sous la forme originale de link-cmdline et modifiée légèrement) sont pris en entrée main1.objresp. Main2.objet la sortie App1.exeresp. App2.exe. Il est exécuté après la compilation et avant la liaison.

C'est travaillé!

L'inconvénient est que je ne peux pas empêcher (encore) la liaison au fichier exe orinal (erreurs sur la fonction principale dupliquée). La solution à cela pourrait être d’avoir un projet lib excluant les sources avec main()from et de les construire également dans le custum-step.

Donc, la réponse à la question devrait: Oui, cela peut être fait!

3
engf-010

Vous ne pouvez pas avoir plus d'une fonction main () dans un seul projet Visual Studio. Donc, vous ne pouvez pas compiler 2 exécutables, le seul moyen est de créer deux projets différents dans la même solution

0
steg

Vous pouvez créer une solution avec deux projets, un pour chaque sortie souhaitée. Rendez-vous ensuite au menu Générer, sélectionnez Génération par lot, puis sélectionnez les deux projets. Si vous souhaitez que les deux fichiers exe se trouvent au même endroit, vous pouvez spécifier une action de post-génération personnalisée: Pour les deux projets: affichez la page de propriétés du projet et dans Evénements de construction, sélectionnez Evénements de post-génération, puis entrez dans le champ Ligne de commande copiera la sortie à l'emplacement de votre choix, quelque chose comme: copy $ (TargetPath) c:\votre emplacement/Y Ensuite, une fois la solution générée, les fichiers de sortie seront copiés à cet emplacement.

0
BALASEM AL-ISAWI