web-dev-qa-db-fra.com

Comment compiler/exécuter du code C++ à partir de Notepad ++

Je lisais http://daleswanson.blogspot.com/2012/07/how-to-compile-c-code-in-notepad-with.html et j'ai décidé de l'essayer pour que je puisse continuer à écrire du code dans Notepad ++ et avoir un cycle de compilation/exécution plus court.

Lorsque j'ai essayé d'entrer le code de compilation/exécution dans NppExec, cela ne fonctionnait pas. Le code que j'ai maintenant est:

npp_save
cd "$(C:\Users\Bart\Desktop\new delete me)"
g++ "$(test.cpp)" -o $(testme.exe) -march=native -O3
NPP_RUN $(testme.exe)

C'était basé sur le premier lien que j'ai donné:

npp_save
cd "$(CURRENT_DIRECTORY)"
g++ "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)

Notepad ++ me donne les informations suivantes dans sa console:

NPP_SAVE: C:\Users\Bart\Desktop\new delete me\test.cpp
CD: 
Current directory: C:\Program Files (x86)\Notepad++
g++ "" -o  -march=native -O3
CreateProcess() failed with error code 2:
The system cannot find the file specified.

NPP_RUN:
- empty command

D'après d'autres pages, il me semblait que je devais simplement coller ce code, les mots en majuscules n'étaient pas destinés à être remplacés mais étaient des variables. J'ai donc utilisé ce code:

npp_save
cd "$(CURRENT_DIRECTORY)"
g++ "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)

Ce qui a donné ceci dans la console Notepad ++:

NPP_SAVE: C:\Users\Bart\Desktop\new delete me\test.cpp
CD: C:\Users\Bart\Desktop\new delete me
Current directory: C:\Users\Bart\Desktop\new delete me
g++ "test.cpp" -o test -march=native -O3
CreateProcess() failed with error code 2:
The system cannot find the file specified.

NPP_RUN: test
- the specified file was not found

Voici ce que j'ai fait pour mettre les choses en place:

J'ai téléchargé mingw-get-setup.exe depuis http://sourceforge.net/projects/mingw/files/ qui a installé le gestionnaire d'installation MinGW. Je l'ai ensuite utilisé pour installer le package mingw32-gcc - ++, ainsi que les packages mingw32-libz.dll et mingw32-libz.dev

Dans Notepad ++, j'ai utilisé le gestionnaire de plug-in pour installer le plug-in NppExec.

Je peux faire exécuter mon code en le compilant d'abord manuellement dans une fenêtre de commande. Notepad ++ se plaint de l'absence d'une bibliothèque. J'utilise donc les indicateurs suivants pour la compilation: G ++ test.cpp -static-libgcc -static-libstdc ++

Si je tape F5 dans Notepad ++ (ou que je clique sur Exécuter dans le menu Exécuter), je peux choisir le fichier a.exe créé à partir de la compilation en ligne de commande. Une fenêtre de commande apparaît et le code s’exécute afin que tout fonctionne correctement.

Mais il semble que ma commande de changement de répertoire ne fonctionne pas pour une raison quelconque dans NppExec lorsque j'essaie d'automatiser la compilation/exécution.

Voici d'autres articles de stackoverflow que j'ai trouvés qui traitent de problèmes similaires, mais qui ne me semblent pas applicables. Je n'ai aucun point, alors je ne peux répondre à aucun d'entre eux:

Eh bien, il semble que le premier message auquel j'ai lié a une solution partielle - il a semblé (malgré la mention des fichiers c dans le nom du message) résumer comment compiler les scripts Perl. Il a dit de mettre le texte suivant dans la fenêtre NppExec:

NPP_SAVE
CD $(CURRENT_DIRECTORY)
C:\MinGW32\bin\gcc.exe -g "$(FILE_NAME)"
a.exe

Il a juste eu "un" sur la dernière ligne, mais c'est la même chose que "a.exe" et c'est plus lisible de cette façon. Cela étant dit, ce n'est pas une solution complète. Cela ne fait que lancer le fichier dans la console interne de Notepad ++, en bas de l'écran, et j'aimerais qu'il affiche une fenêtre, comme cela arriverait si j'utilisais le F5 de Notepad ++ pour exécuter mon programme compilé à partir de son répertoire.

4
Bart Humphries

J'ai un code de travail (que j'ai édité un peu) d'ici:
http://windowsbro.blogspot.hu/2012/10/compile-with-notepad-any-language.html

npp_save
g++ "$(FULL_CURRENT_PATH)" -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"
npp_run $(CURRENT_DIRECTORY)\$(NAME_PART).exe

Sous cette forme, il compile le binaire à côté du fichier source. Si vous changez la dernière ligne en ceci:

cmd /c "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"

puis le programme s'exécute dans la console NppExec avec cmd.exe en cours d'exécution.

5
Just a Wannabe

En tant que fan de big / Notepad ++ et novice en C++, il m'a fallu un peu de temps pour comprendre et suivre les instructions. 

Il manque une partie ici, et si vous êtes comme moi, recommencez à zéro et n’avez aucune connaissance du compilateur MinGW. Vous voudrez peut-être configurer celui-ci en premier. 

Si le compilateur MinGW ne se trouve pas dans votre chemin d’environnement (ou ne le préférez pas: versions portables/limitations de stratégie), vous pouvez le suivre.  


  1. Installer mingw-get-setup.exe

  2. Choisissez les packages principaux, assurez-vous qu'ils sont tous sur la même version, sinon des erreurs étranges, telles que des fichiers stddef.h manquants lors de la compilation/exécution, risquent de se produire. J'ai choisi ceux-ci dans MinGW Installation Manager:

 MinGW Installation Manager C++ components

  1. Créez un script dans Notepad ++:
npp_save
VCD C:\MinGW\bin\
g++ "$(FULL_CURRENT_PATH)" -o 
"$(CURRENT_DIRECTORY)\$(NAME_PART).exe"
cmd /c "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"
  1. Compilez et exécutez le programme dans Notepad ++:  Execute C++ code in Notepad++

  2. Vous pouvez ajouter un bouton ou un raccourci d'exécution directe. F5 Depuis nppexec> Options avancées. Le bouton Exécuter est un petit bouton à la fin de la barre d’outils:  Adding Execute button and keyboard shortcut

Alternativement, vous pouvez ajouter MinGW à votre chemin d’environnement si vous voulez exécuter votre programme compilé à partir de n’importe quel emplacement, une bonne explication se trouve sur leur website . Ainsi, vous pourrez ignorer le pointage dans le répertoire MinGW:

cd C:\MinGW\bin\
1
Gunay Anach

En ce qui concerne votre dernière question, comment démarrer a.exe dans une fenêtre distincte de la console du bloc-notes ++: essayez de remplacer la dernière ligne a.exe par quelque chose comme:

NPP_RUN cmd /k a

npp_run est une commande de npp_exec. Ici, il lance la commande "cmd/k a", cmd/k exécute la commande après le "/ k" et garde la fenêtre ouverte après la fin du cycle de a.exe.

0
Lars Fischer