Puis-je coder et comstackr tout type d’application Visual Studio à partir de la ligne de commande?

Je suis dans la toute première étape d’utilisation d’Emacs comme environnement de programmation. Je l’exécute à l’invite du DOS à l’aide d’ emacs -nw et emacs -nw le développement là-bas. C’est assez incroyable que je puisse coder J2EE et J2ME en utilisant simplement Emacs et son Eshell / Shell.

Et maintenant, utilisez-le pour le développement de Visual Studio. Actuellement, je travaille dans une application OpenGL simple utilisant Visual C ++. NET 2008. Je n’ai pas essayé de construire cette application à partir de la ligne de commande, est-ce possible?

Si dans J2EE et J2ME, nous avions le fichier build.xml (c’est-à-dire un fichier de construction ant), mais quel est l’analogue de celui de la solution Visual Studio.NET?

J’ai déjà compilé un simple programme Visual Studio Console à l’aide de la ligne de commande. Cela fonctionne, mais qu’en est-il d’un ensemble complet de projet ???

Merci!

Beaucoup de commentaires:

  1. Vous n’avez pas besoin d’utiliser -nw ; Emacs fonctionne bien avec Windows.

  2. L’analogue de build.xml est xxxxxx.sln, associé aux fichiers de projet dépendants, qui sont zzzzzzz.csproj. Bien sûr, remplacez xxxx et zzzzz par les noms de votre solution et de votre projet.

  3. vous n’avez pas besoin de l’eshell ou du shell pour comstackr. Vous pouvez exécuter la compilation à partir d’emacs à l’aide de la Mx comstack qui est souvent liée à une combinaison de touches pour un access facile. Le mien est C-xC-e mais je ne sais pas si c’est une convention générale ou juste mon choix.

  4. La fonction next-error fonctionne correctement pour déplacer le point vers la prochaine erreur signalée dans la sortie du compilateur. Vous aurez peut-être besoin d’une expression régulière pour les chaînes d’erreur. J’utilise ceci:

    (add-to-list ‘erreur-compilation-regexp-alist-alist’) (msvc “^ [\ t] \ ([A-Za-z0-9 \.] [^ (] \. \ (cpp \ | c \ | h \) \) (\ ([0-9] + \)) *: + \ (erreur \ | erreur fatale \ | avertissement \) C [0-9] +: “1 3)))

Quand il y a déjà une entrée msvc, vous devrez peut-être

 (let ((msvcentry (assoc 'msvc compilation-error-regexp-alist-alist ))) (when msvcentry (setcdr msvcentry '(msvc ....))))) 
  1. CEDET. Je n’ai aucune expérience de l’utilisation de CEDET avec C ++ sous Windows, mais de nombreuses personnes utilisent CEDET avec C ++ dans d’autres environnements, pour la complétion de code, l’parsing de code, ce genre de chose.

vous avez plusieurs outils de ligne de commande à votre service:

  • msbuild qui construit votre projet à partir de fichiers .sln (qui ressemblent aux fichiers build.xml de ant)
  • nmake qui est un ancien système de construction basé sur des fichiers Makefile
  • pure cl.exe et link.exe

tout ce que vous avez à faire est de lancer l’invite visual-studio-commandline OU d’intégrer l’environnement de cette invite dans votre propre environnement shell / powershell / emacs. jetez un coup d’œil au fichier vcvars32.bat et à ce qu’il fait, il se trouve quelque part dans le dossier d’installation de visual2008.

vous pouvez également utiliser d’autres systèmes de construction ( scons , cmake, etc.) qui sont autonomes (scons) ou créer des scripts de compilation natifs pour votre compilateur (cmake, créerait .sln dans votre cas).

pour comstackr (et lier) un binary simple qui utilise opengl, vous pouvez le faire:

  % cl /nologo opengl.cpp /link OpenGL32.lib GLu32.lib and GLaux.lib 

jetez un oeil à un didacticiel .

Dans une autre réponse à cette question, @akira a déclaré :

Tout ce que vous avez à faire est de lancer l’invite visual-studio-commandline OU d’ intégrer l’environnement de cette invite dans votre propre environnement shell / powershell / emacs. Examinez le fichier vcvars32.bat et son rôle . il se trouve quelque part dans le dossier d’installation de visual2008.

En suivant cette suggestion, j’ai créé un fichier Emacs lisp pour configurer mon environnement dans Emacs for Visual Studio 2010. Pour créer ce fichier, j’ai tout d’abord capturé les parameters d’environnement à partir d’une invite de commande ordinaire, puis procédé de même depuis l’invite de commandes de Visual Studio. :

 set > set_ordinary.txt set > set_vs2010.txt 

Ensuite, j’ai trouvé les différences entre les deux à l’aide d’un outil de différenciation de fichiers pour Windows . Le code emacs lisp suivant est le résultat de mes efforts. Copiez simplement son contenu dans votre fichier .emacs ou, mieux, enregistrez son contenu sur vcvars32-2010.el et placez-le dans votre load-path .

 ;;; vcvars32-2010.el --- Create Visual Studio Command Prompt (2010) environment settings ;; Environment settings for: ;; Visual Studio 2010 Professional ;; Version 10.0.40219.1 SP1Rel ;; ;; Microsoft .NET Framework ;; Version 4.5.50938 SP1Rel ;; Reference: ;; C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat ;; -and- ;; C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat ;;; Usage: ;; Place this file somewhere in your `load-path' and add the following line ;; to your `.emacs' file: ;; ;; (load "vcvars32-2010.el") ;;; Code: (setenv "CommonProgramFiles" "C:\\Program Files\\Common Files") (setenv "DevEnvDir" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\") (setenv "Framework35Version" "v3.5") (setenv "FrameworkDir" "C:\\Windows\\Microsoft.NET\\Framework\\") (setenv "FrameworkDIR32" "C:\\Windows\\Microsoft.NET\\Framework\\") (setenv "FrameworkVersion" "v4.0.30319") (setenv "FrameworkVersion32" "v4.0.30319") (setenv "INCLUDE" (concat "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\INCLUDE;" "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\include;")) (setenv "LIB" (concat "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;" "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\lib;")) (setenv "LIBPATH" (concat "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;" "C:\\Windows\\Microsoft.NET\\Framework\\v3.5;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;")) (setenv "Path" (concat "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VSTSDB\\Deploy;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools;" "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;" "C:\\Windows\\Microsoft.NET\\Framework\\v3.5;" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\VCPackages;" "C:\\Program Files (x86)\\HTML Help Workshop;" "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin\\NETFX 4.0 Tools;" "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin;" (getenv "Path"))) (setenv "PROCESSOR_ARCHITECTURE" "AMD64") (setenv "ProgramFiles" "C:\\Program Files") (setenv "VCINSTALLDIR" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\") (setenv "VSINSTALLDIR" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\") (setenv "WindowsSdkDir" "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\") ;;; vcvars32-2010.el ends here