Muchas veces escribo en este blog, con el único fin de no olvidar ciertas cosas y ésta es una de ellas…
Recientemente he tenido que instalar el Visual C++ y el SDK de Windows. Le dí una oportunidad al Visual C++ de existir, y mientras mi código lo escribía en emacs, utilizaba el IDE chafa de Microsoft para compilar y demás. Pero los problemas con este IDE son los mismos que hay con todos: te crea mil carpetas, le pone flags extrañas al compilador, y luego hace propagando de cosas de Microsoft que simplemente no entiendo. (“error de parseo debido al manifest” !?), así que decidí ponerme a investigar como usar el compilador ése desde línea de comando.
Para poder compilar, vamos a tener que hacer uso de un vcvars32.bat que nos pone todas las variables de ambiente que se necesitan para hacerlo. Este archivo se encuentra en estos tiempos en
c:/Program Files/Microsoft Visual Studio 9.0/VC/bin/. Sin embargo, al bajar el SDK para Windows… ¡este batch file ya no sirve! ¡Tiene un bug! Un bug que Microsoft no ha arreglado desde marzo. あほ!Por lo que se tiene que modificar este archivo para que diga lo siguiente:
@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0
@SET VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0\VC
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework
@SET FrameworkVersion=v2.0.50727
@SET Framework35Version=v3.5
@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR
Una vez que se ha modificado ese archivo para que el header este idéntico a como lo pusé arriba, vamos a tener que correr este VCVARS32. Una vez hecho esto, te aparecerá sun mensaje de “Setting environment for using Microsoft Visual Studio 2008 x86 tools.” indicándote que ya vas a poder utilizar las herramientas cl y link. El Visual Studio te incluye una opción para poder hacerlo desde el cmd, pero te cambia todo path hasta donde el Visual guarda los ‘proyectos’ por default. Así que para esto hice un pequeño macro de uso personal, para que corriera este batch desde el cmd en emacs y me dejara a mi en C:
(fset 'wally-visual-shell
[?\M-x ?s ?h ?e ?l ?l return ?e ?: return ?c ?: return ?c ?d ? ?c ?: ?/ ?P ?R ?o ?g ?r ?a ?m ? ?F ?i ?l ?e ?s ?/ ?M ?i ?c ?r ?o ?s ?o ?f ?t ? ?V ?i ?s ?u ?a ?l ? ?S ?t ?u ?d ?i ?o ? ?9 ?. ?0 ?/ ?V ?C ?/ ?b ?i ?n ?/ return ?v ?c ?v ?a ?r ?s ?3 ?2 return ?c ?d ? ?c ?: ?/ return])
Con esto puedo compilar directamente desde emacs después. Cuando se compila aparece un warning relacionado con el exception handling. Éso es porque se debe de compilar de esta manera:
cl /EHsc wally.cpp
Bueno memoria, espero que te haya servido esta entry. Con amor Wally.

