Compilar y ejecutar C++ desde Sublime Text

Sublime Text
Como todo el proceso de creación de un nuevo Build System ya lo expliqué en la anterior entrada Compilar y ejecutar JAVA desde Sublime Text, solo colocaré el código JSON que deberá contener este nuevo Build System que se encargará de compilar y ejecutar nuestro programa en C++.
//Codigo para Windows
{
  "cmd": ["g++ -Wall ${file_name} -o ${file_base_name} && ${file_base_name}.exe"],
  "working_dir": "${file_path}",
  "shell": true
}
//Codigo para Linux
{
  "cmd": ["g++ -Wall ${file_name} -o ${file_base_name} && ./${file_base_name}"],
  "working_dir": "${file_path}",
  "shell": true
}
Si tienes dudas sobre qué hacer con el código anterior, haz click sobre el enlace anterior donde está todo explicado paso por paso.

Comentarios

  1. Muchas gracias por tu respuesta, he podido compilar y correr algunos programas sencillos de C y C++ cambiando el g++ por gcc, sin embargo en programas que requieren interacción con el usuario, pedir enteros o cadenas, no funca, se va de largo y lee un cero o vació, en notepad++ encontré como a la hora de correr un programa, abrir la pantalla negra como de símbolo de sistema donde se ejecuta el programa, podrías ayudarme para lograr algo similar?, de antemano gracias, sos grande...

    ResponderEliminar
    Respuestas
    1. Pues la verdad es que he buscado mucho, pero no he conseguido hacer que la consolita de Sublime Text pueda recoger datos, y tampoco he podido hacer que aparezca la ventana de Símbolos de sistema desde Sublime text...
      Buscaré más a fondo, y en cuanto tenga algo, o me de por vencido te aviso. xD

      Eliminar
    2. Pues ya está todo solucionado, después de mucho buscar y probar cosas nuevas, puedo decir que SI, se puede ejecutar una ventanita de Símbolos del sistema o cmd.exe donde se compilará y ejecutará correctamente nuestro programa con Sublime Text tal y como lo hace Notepad++. He hecho una entrada nueva donde está todo explicado paso por paso, mañana al mediodía la subiré.

      Saludos.

      Eliminar
  2. Podrías subir el nuevo o mandar el enlace, gracias!

    ResponderEliminar
    Respuestas
    1. Si te refieres a la entrada donde explico como ejecutar tus programas en el CMD.exe desde Sublime Text aquí te pongo el enlace.

      Un saludo!
      Ejecutar en cmd.exe desde Sublime Text

      Eliminar
  3. Listo! Me funciona perfecto en Ubuntu.
    Muchas gracias! :)

    ResponderEliminar
    Respuestas
    1. podrias decirnos como lo haces funcionar en linux

      Eliminar
  4. Me sale:
    [Error 5] Acceso denegado
    No se que estoy haciendo mal, en otra Pc me funcionaba bien, y en este no :(

    ResponderEliminar
  5. Disculpen mi ignorancia pero no se que se pone en file_name en file_name_base y en working_dir, creen que me puedan dar un ejemplo

    ResponderEliminar
    Respuestas
    1. Ese es el ejemplo, es decir solo copia y pega ese código y listo, son cosas que sublime text ya entiende.

      Saludos.

      Eliminar
  6. en MAC corre y con optimizaciones de compilación dejo el codigo
    "shell_cmd": "gfortran -Wall ${file_name} -Ofast -march=corei7 -o ${file_base_name}.out",
    "working_dir": "${file_path}",
    "shell": true
    }

    ResponderEliminar
    Respuestas
    1. corrijo es gfortran 4.8.2 en mac, con las optimizaciones
      -Ofast -march=corei7

      Eliminar
    2. Muchas gracias por tu aportación, estoy seguro que ayudarás a más usuarios de MAC.
      Saludos.

      Eliminar
    3. Como le hago para que pueda ingresar datos el usuario en C++ correiendo en Mac ?
      Para que me abra una terminal por ejemplo y ahi se ejecute!
      LO MISMO PARA JAVA EN MAC POR FAVOR
      Espero tu respuesta, saludos y gracias.

      Eliminar
    4. Pues no tengo una maquina con Mac asi que no puedo probarlo, pero creo que seria igual que en linux, aqui te pongo la entrada donde explico como ejecutar un programa en el terminal desde sublime, por supuesto ya en el terminal si podras introducir datos.

      http://ayudasprogramacionweb.blogspot.com.es/2013/01/ejecutar-en-terminal-linux-sublime-text.html

      Incluso esta explicado como se haria todo para java y para c++, por ultimo decir que en los ejemplos utilizo el jdk de java y g++ para c++, si tu cuentas con otros compiladores, podras hacerlos correr haciendo una pequeña modificacion en el script.

      Saludos.

      Eliminar
  7. Hola disculpa a mi me parece un erro que dice: "g++" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.
    [Finished in 0.1s with exit code 1] AYUDAME qe pasa?????

    ResponderEliminar
    Respuestas
    1. Si estás en Windows asegúrate de instalar el compilador g++ en tu ordenador te aconsejo descargarlo desde aquí http://www.mingw.org/, y añadir la carpeta que contiene el compilador a las variables de entorno del sistema, sabrás que todo lo has hecho correctamente cuando en el cmd introduzcas g++ y salga un mensaje de error del compilador y no el típico "No se reconoce el comando".

      En Linux instala el compilador mediante el paquete g++ con apt-get o tu gestor de paquetes que quieras y pruebalo introduciendo en tu Terminal g++ y deberá aparecer lo mismo que en Windows, es decir, un mensaje de error del compilador y no el típico "No se reconoce el comando".

      Saludos

      Eliminar
  8. explicate mejor con resptecto a lo que es añadir a la carpeta; por que no se a que te refieres

    ResponderEliminar
    Respuestas
    1. Cuando utilizas en el cmd un comando como por ejemplo "java", estamos invocando a un programa que ha de estar en algún lugar de nuestro ordenador. Cuando tu en el cmd utilizas "java" y pulsas intro, el programa cmd busca en una serie de carpetas si existe ese tal programa "java", si lo encuentra en sus carpetas, lo ejecuta.

      Cuando tu instalas java, este se instala en su propia carpeta dentro de "archivos de programa" o "program files" de modo que tienes que decirle al cmd donde está este nuevo programa, para que cuando utilices java, cmd sepa donde está y lo ejecute.

      A esto nos referimos cuando decimos añadir una ruta a las variables de entorno, que no son mas que una serie de rutas a carpetas. De modo que si añades a las variables de entorno, la ruta a java, la próxima vez que cmd encuentre el comando java, al buscarlo en las rutas de las variables de entorno lo encontrará y ejecutará.

      Como añadir rutas a las variables de entorno, está explicado en la siguiente entrada:

      http://ayudasprogramacionweb.blogspot.com.es/2012/11/compilar-y-ejecutar-java-en-cmd-windows.html

      Saludos.

      Eliminar
  9. Hola, tengo la duda de que deberia hacer si no he instalado un compilador como MinGW, pero he descargado el codeblocks que trae incluido mingw.
    ya que crear el .sublime-build con este codigo no me funciono.

    ResponderEliminar
  10. Buenas, me sale un error que dice:

    g++: Cubo: No such file or directory
    g++: de: No such file or directory
    g++: n.c: No such file or directory
    g++: de: No such file or directory
    g++: n: No such file or directory
    g++: no input files

    ¿Que podría hacer?

    ResponderEliminar
  11. he instalado el g++ pero aun no lo reconoce

    ResponderEliminar
  12. por qué me pone esto?
    ""g++ -Wall -o && .exe"" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.
    [Finished in 0.0s with exit code 1]
    [cmd: ['g++ -Wall -o && .exe']]
    [dir: C:\Users\Usuario\AppData\Roaming\Sublime Text 3\Packages\User]
    [path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Common Files\Autodesk Shared\;C:\Program Files (x86)\Autodesk\Backburner\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Users\Usuario\AppData\Local\Programs\Python\Python35-32\Scripts\;C:\Users\Usuario\AppData\Local\Programs\Python\Python35-32\]

    ResponderEliminar
  13. Me da este error:
    g++: error: missing filename after ‘-o’
    g++: fatal error: no input files

    ¿Alguien puede ayudar?, gracias de antemano. Saludos.

    ResponderEliminar
  14. Amigo por que me aparece esto
    ""g++ -Wall -o && .exe"" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.
    [Finished in 0.1s with exit code 1]
    [cmd: ['g++ -Wall -o && .exe']]
    [dir: C:\Program Files\Sublime Text 3]
    [path: C:\PROGRA~2\Borland\CBUILD~1\Bin;C:\PROGRA~2\Borland\CBUILD~1\Projects\Bpl;C:\Program Files (x86)\Intel\TXE Components\TCS\;C:\Program Files\Intel\TXE Components\TCS\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared]

    ResponderEliminar
  15. porque cuando abro el sublime text elojo que voy a programar en java y al presionar el ctrl+b este solo me dice finish pero no muestra nada y cuando lo pongo en modo c++ si compila y muestra todo ¯\_(ツ)_/¯

    ResponderEliminar
  16. Pueden intentar con este codigo para que se les ejecute en una cm,d:

    {
    "cmd": "gcc ${file_name} -o ${file_base_name}.exe && start ${file_base_name}.exe",
    "working_dir": "${file_path}",
    "shell": true
    }

    ResponderEliminar
  17. PARA LINUX!
    Crean uno nuevo Build System y pegan este codigo:

    {
    "cmd": ["xterm-256color -e 'zsh -c \"gcc $file_name -o ${file_base_name} && ./${file_base_name} ;echo;echo Presiona ENTER para salir...; read line\"'"],
    "selector" : "source.c",
    "shell": true
    }

    echo $SHELL = para saber que shell usas (zsh)
    echo $TERM = para saber que terminal usas (xterm-256color)


    Espero ayudado

    ResponderEliminar
  18. PARA LINUX!
    Crean uno nuevo Build System y pegan este codigo:

    {
    "cmd": ["xterm-256color -e 'zsh -c \"gcc $file_name -o ${file_base_name} && ./${file_base_name} ;echo;echo Presiona ENTER para salir...; read line\"'"],
    "selector" : "source.c",
    "shell": true
    }

    echo $SHELL = para saber que shell usas (zsh)
    echo $TERM = para saber que terminal usas (xterm-256color)


    Espero ayudado

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Calcular factorial de un numero en JAVA

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA