2012-07-22 35 views
10

Logré configurar Sublime Text 2 para C++ y ahora puedo compilar mi código (usando el compilador MinGW).¿Cómo ejecutar programas en una consola externa con Sublime Text en el sistema de Windows?

Desafortunadamente, la consola Sublime Text no puede admitir ningún tipo de entrada para C++.

Quiero abrir mi programa compilado en una consola externa (por ejemplo, el terminal de Windows). Intenté usar "call" o "cmd" pero no pude hacerlo funcionar. (Que todavía se abre el archivo en la consola)

Aquí está mi configuración de construcción:

{ 
"cmd": ["C:\\MinGW\\bin\\mingw32-g++.exe", "-Wall", "-time", "$file", "-o", "$file_base_name"], 
"cmd": ["call", "$file"], 
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
"working_dir": "${project_path:${folder}}", 
"selector": "source.c", 
"shell": true, 
"encoding": "latin1" 
} 
+0

¿Podría intentar configurar 'shell' a' false'. – nullpotent

+0

No funciona cuando puse '' shell'' en '' false'' (incluso el compilador no funciona cuando lo hago) – halflings

Respuesta

13

Pruebe con esto:

{ 
    "cmd": ["C:\\Dev-Cpp\\bin\\mingw32-g++.exe", "-static", "-Wall", "-time", "$file", "-o", "$file_base_name.exe", "&&", "start", "$file_base_name"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "working_dir": "${project_path:${folder}}", 
    "selector": "source.c", 
    "shell": true, 
    "encoding": "latin1" 
} 

El truco consiste en ejecutar el archivo generado mediante el "Inicio" comando, que obliga al archivo a abrir en una nueva ventana cmd, y poner todo dentro de la primera definición cmd (usando & & para ejecutar los dos comandos), porque si define más de una matriz cmd, sobrescriben.

+1

Esto funciona perfectamente. Gracias por la gran explicación también, no sabía sobre el comando "inicio" (y a menudo podría usarlo en el futuro)! – halflings

+1

@FacundoJ, ¿cómo podría hacerlo en Mac o Linux? – Tareq

+0

@Tareq vea la respuesta de RichS a continuación: D – FacundoJ

7

@FacundoJ: en Mac, puede usar Terminal para ejecutar la aplicación externamente. En C++. Sublime-build, cambie el cmd para que en lugar de simplemente ejecutar el resultado compilado, lo inicie en Terminal.

Cambio de:

"cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 

Para:

"cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && open -a Terminal.app '${file_path}/${file_base_name}'"] 
+0

¿Es lo mismo para Linux? –

+0

No, no funcionará para Linux, ya que Terminal es una aplicación de Mac. Pero, estoy seguro de que hay un mecanismo equivalente. – RichS

2

En la respuesta aceptada de @FacundoJ se compila el programa cada vez que lo ejecute. Esto no siempre es necesario (es decir, cuando solo modifica algunos recursos externos o juega con args principales). En ese caso, le recomiendo esta configuración:

{ 
    "cmd": ["g++", "$file", "-o", "$file_base_name.exe"], 
    "working_dir": "${project_path:$folder}", 
    "selector": "source.cpp", 
    "shell": true, 
    "variants": [{ 
    "name": "Run", 
    "cmd": ["start", "", "$file_base_name"] 
    }] 
} 

(Asumiendo que tiene C: \ bin en el PATH MinGW \) para que pueda usarlo como

  • Ctrl + B Compilar el programa

  • Ctrl +Shift +B Run (después de compilado, por supuesto)

Nota 1 Nota la cadena vacía después de start comando: se should be used.

Nota 2 se debe utilizar .cpp sufijo o la sintaxis de C89 se utiliza por defecto (al menos con MinGW g ++ compilador)

2

para Ubuntu

{ 
"cmd": ["g++ ${file} && xterm -hold -e ./a.out"], 
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
"working_dir": "${file_path}", 
"selector": "source.c++", 
"shell": true, 
} 

lo que esta acumulación sistema hace es compila el .archivo cpp y abra el archivo de salida en xterm.

-> si desea que la salida se abra en gnome-terminal, crear un perfil

En gnome-terminal, ir a Editar -> Perfil Preferencias-> Haga clic en la pestaña Orden. Seleccione 'Mantenga el terminal abierto' en el menú desplegable llamada cuando el comando exits.You debe crear un nuevo perfil para que

y luego vuelva a colocar "cmd" con

"cmd": ["g++ ${file} && gnome-terminal --window-with-profile=PROFILENAME -e ./a.out"] 
2

La respuesta aceptada que permite ejecutar el programa en Windows CMD y aceptar entrada. Pero una vez que finaliza la ejecución del programa, la ventana de cmd se cerrará inmediatamente antes de poder ver claramente la salida.

Creo que deberías probar la siguiente solución, que mantiene abierta la ventana de CMD después de ejecutar el programa, para que puedas examinar tu resultado.

{ 
    "shell_cmd": "g++ -Wall -std=c++11 \"${file}\" -o \"${file_path}/${file_base_name}.exe\"", 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "working_dir": "${file_path}", 
    "selector": "source.c, source.c++", 

    "variants": 
    [ // run in the sublime text console 
     { 
      "name": "Run", 
      "shell_cmd":"\"${file_path}/${file_base_name}\"" 
     }, 
     // run in the Windows cmd 
     { 
      "name": "Run in cmd", 
      // the following two settings are all valid, choose one you prefer 
      "shell_cmd": "start cmd /k $file_base_name " 
      // "shell_cmd": "start \"$file_base_name\" call $file_base_name" 
     } 
    ] 
} 

Primero pulse Ctrl + B para compilar el programa, a continuación, pulse Ctrl + Shift + B y elija run in cmd opción, que se ejecute el programa en el sistema de CMD en lugar de la Consola Sublime Text.

La configuración anterior se prueba en Windows 8.1 y también debería funcionar en Windows 7 y Windows 10 de fábrica.

0

Esto está FUNCIONANDO !!

{"cmd": ["g++", "-Wall", "-ansi", "-pedantic-errors", "$file_name", "-o", 
"${file_base_name}.exe", "&&", "start", "cmd", "/k" , "$file_base_name"], 
"selector": "source.cpp", 
"working_dir": "${file_path}", 
"shell": true} 
  • sólo herramientas Goto> Construir Sytem> Nuevo sistema de construcción ... "C++. Sublime-build" ... y debe guardarlo como TODOS LOS ARCHIVOS
  • SELECT que construir

Simplemente ingrese (ctrl + b) para ver un símbolo del sistema elevado y abrir sus entradas como otros IDE.

Cuestiones relacionadas