web-dev-qa-db-fra.com

Comment compiler et exécuter C dans sublime text 3?

Je voudrais compiler et exécuter le programme C en sublime text 3 sur Ubuntu 14.04. Actuellement, le programme est compilé avec gcc en utilisant sublime text 3 en exécutant une commande (voir le code ci-dessous), mais je me demandais s'il était possible que la sortie de l'exécution du programme apparaisse également sur la console en texte sublime.

Voici ce que je dois actuellement compiler le programme C avec du texte sublime 3

c_compile.sublime-build

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}"],
"selector" : "source.c",
"Shell":false,
"working_dir" : "$file_path"
}

J'ai essayé d'ajouter && ./${file_base_name} comme ça:

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}","&&","./${file_base_name}"],
"selector" : "source.c",
"Shell":false,
"working_dir" : "$file_path"
}

Mais cela me donne cette erreur:

gcc: error: &&: No such file or directory
[Finished in 0.0s with exit code 1]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

Voici mon programme C simple avec lequel je travaille:

Ex1-6.c

#include <stdio.h>

main(){
    printf("Hello world");
}

J'ai cherché en ligne une solution, mais les réponses suggérées permettent soit de compiler uniquement (cette partie fonctionne déjà pour moi), soit ne fonctionne pas. Toute idée sur la façon de corriger ce code afin de compiler et d'exécuter en sublime texte 3 (si possible). Je vous remercie

Edit # 1 comme suggéré par user2357112:

Après avoir changé Shell en true:

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}","&&","./${file_base_name}"],
"selector" : "source.c",
"Shell":true,
"working_dir" : "$file_path"
}

C'est ce que je reçois:

gcc: fatal error: no input files
compilation terminated.
[Finished in 0.0s with exit code 4]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

Edit # 2 suggéré par Eugene K:

J'ai essayé de changer de cmd pour exécuter le programme uniquement:

{
"cmd" : ["./${file_base_name}"],
"selector" : "source.c",
"Shell":false,
"working_dir" : "$file_path"
}

Il s'exécute correctement et affiche le résultat sur la console avec du code:

Hello world
[Finished in 0.0s with exit code 12]
[cmd: ['./Ex1-6']]
[dir: /home/amir/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

Jusqu'à présent, le cmd compile ou exécute, mais ne fait pas les deux ensemble, en espérant que quelque chose puisse être fait pour le compiler et l'exécuter avec une seule commande.

37
CMPS

Avez-vous essayé d'écrire toute la commande en une seule chaîne?

{
"cmd" : ["gcc $file_name -o ${file_base_name} && ./${file_base_name}"],
"selector" : "source.c",
"Shell": true,
"working_dir" : "$file_path"
}

Je crois (semi-spéculation ici), que ST3 prend le premier argument comme "programme" et transmet les autres chaînes comme "arguments". https://docs.python.org/2/library/subprocess.html#subprocess.Popen

43
erbridge

Pour un système de construction sublime implémentant la commande de menu Exécuter:

  • Allez dans Outils-> Construire le système-> Nouveau système de construction ...

O

  • Créer un fichier ~/.config/sublime-text-3/Packages/User/GCC.sublime-build

et insérez ceci:

{
"Shell_cmd" : "gcc $file_name -o ${file_base_name}",
"working_dir" : "$file_path",
"variants":
  [
    {
      "name": "Run",
      "Shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name}"
    }
  ]
}

* Cet exemple utilise le compilateur GCC. N'hésitez pas à remplacer gcc par le compilateur de votre choix.

26
Gonen

Nous pouvons compiler le code de C dans Sublime Text et imprimer des valeurs ou des chaînes mais ne le fait pas accepter les entrées de l'utilisateur. (Jusqu'à ce que je sache ... je suis certain de la compilation mais pas de la sortie d'une entrée donnée.) Si vous utilisez Windows, vous devez définir les variables d'environnement pour Sublime Text et le compilateur GCC.

3
rock321987

La dernière version du sublime autorise même la commande directe au lieu de guillemets doubles. Essayez le code ci-dessous pour le système de construction

{
    "cmd" : ["gcc $file_name -o ${file_base_name} && ./${file_base_name}"],
    "selector" : "source.c",
    "Shell": true,
    "working_dir" : "$file_path",
}
1
Akansh Gulati

Après une session rigoureuse recherche de code sur Internet, j’ai finalement trouvé une solution qui vous permet compilez + exécutez votre code C "ensemble" , en C99, dans une fenêtre de terminal dédiée . Je sais, quelques personnes n'aiment pas C99 . Je n'aime pas quelques personnes non plus.

Dans la plupart des cas, Sublime compile et exécute le code, mais en C90 ou une version inférieure. Donc, si vous voulez spécifiquement que ce soit C99 , c’est la voie à suivre.

[~ # ~] note [~ # ~] : Btw, je l'ai fait sur un ordinateur Windows, je ne peux pas garantir pour les autres! Cela ne fonctionnera probablement pas là!

1. Créez un nouveau système de compilation dans Sublime: Outils> Système de construction> Nouveau système de construction ...

New Build System

2. Un nouveau fichier appelé untitled.sublime-build Serait créé.

Très probablement, Sublime l'ouvrira pour vous.

Sinon, allez à Préférences> Parcourir les packages> Utilisateur

Open new sublime-build

Si le fichier untitled.sublime-build est là , alors ouvrez-le , si elle n’est pas là , alors créez-la manuellement et ouvrez-le .

3. Copiez et collez le code ci-dessous dans le fichier untitled.sublime-build Mentionné ci-dessus et enregistrez-le.

{
    "windows":
    {
        "cmd": ["gcc","-std=c99" ,"$file_name","-o", "${file_base_name}.exe", "-lm", "-Wall", "&","start", "${file_base_name}.exe"]
    },
    "selector" : "source.c",
    "Shell": true,
    "working_dir" : "$file_path",
}

Fermez le fichier. Tu as presque fini!

4. Enfin, renommez votre fichier de untitled.sublime-build À myC.sublime-build, ou montrez votre créativité ici. Il suffit de garder la même extension de fichier.

5. Enfin définissez le système de construction actuel sur le nom de fichier que vous avez écrit à l'étape précédente. Dans ce cas, il s’agit de myC

Update current build system

Voilà! Compilez + Exécutez votre code C en utilisant C99 par Outils> Construire, ou en appuyant simplement sur Ctrl + B

1
Sayan Sil

L'instruction est basée sur le post "icemelon". Lien vers le post:

comment-faire-compiler-et-exécuter-un-programme-en-sublime-text-2

Utilisez le lien ci-dessous pour savoir comment configurer la variable d'environnement sur votre système d'exploitation:

c_environment_setup

Les instructions ci-dessous ont été testées sur le système Windows 8.1 et Sublime Text 3 - build 3065.

1) Installez MinGW. 2) Ajoutez le chemin vers "MinGW\bin" dans la "variable d'environnement PATH".

"Propriétés système -> Avancé -> Environnement" et mettez à jour la variable "PATH".

3) Vérifiez ensuite votre variable d’environnement PATH à l’aide de la commande ci-dessous dans l'invite de commande:

echo %path%

4) Ajouter un nouveau système de construction au texte sublime.

Ma version du code ci-dessous ("C.sublime-build").

lien vers le code:

C.sublime-build

// Put this file here:
// "C:\Users\[User Name]\AppData\Roaming\Sublime Text 3\Packages\User"
// Use "Ctrl+B" to Build and "Crtl+Shift+B" to Run the project.
// OR use "Tools -> Build System -> New Build System..." and put the code there.

{
    "cmd" : ["gcc", "$file_name", "-o", "${file_base_name}.exe"],

    // Doesn't work, sublime text 3, Windows 8.1    
    // "cmd" : ["gcc $file_name -o ${file_base_name}"],

    "selector" : "source.c",
    "Shell": true,
    "working_dir" : "$file_path",

    // You could add path to your gcc compiler this and don't add path to your "PATH environment variable"
    // "path" : "C:\\MinGW\\bin"

    "variants" : [

        { "name": "Run",
          "cmd" : ["${file_base_name}.exe"]
        }
    ]
}
1
Maks

Le meilleur moyen serait simplement d’utiliser un Makefile pour votre projet et ST3 détectera automatiquement le système de compilation pour votre projet. Par exemple. Si vous appuyez sur Maj + Ctrl/cmd + B, vous verrez ceci: Make

1
Sergei Nazarenko

essayez d’écrire un script Shell nommé run.sh dans votre dossier de projet

#!/bin/bash
./YOUR_EXECUTIVE_FILE
...AND OTHER THING

et faire un Build System pour le compiler et l'exécuter:

{
      "Shell_cmd": "make all && ./run.sh"
}

n'oublie pas $chmod +x run.sh

faire une chose et bien le faire :)

0
Lw Cui

Utilisez-vous du texte sublime sur linux? J'ai eu le même problème et c'était résolu! Voici mon c.sublime-build:

{
 "Shell_cmd" : "gcc $file_name -o $file_base_name && ./$file_base_name", 
 "selector" : "source.c",
 "Shell":true,
 "working_dir" : "$file_path"
}
0
DucNgo

Si vous codez en langage C ou C++. Je pense que nous avons de la chance car nous pourrions utiliser un fichier à saisir. C'est tellement pratique et clair. Je fais souvent ça. C'est un argument pour l'implémenter:

{
freopen("inputfile", "r", stdin);
}

Notez que inputfile doit se trouver dans le même répertoire que le fichier de code source, r signifiant lecture.

0
Viet Dung

Dans Sublime Text 3 .... Essayez de remplacer le code ci-dessus par ceci, notez l'ajout de "start" .....

"variantes": [

    { "name": "Run",
      "cmd" : ["start", "${file_base_name}.exe"]
    } 
0
Neil

Le code qui a fonctionné pour moi sur une machine Windows 10 utilisant Sublime Text 3

 {
 "cmd" : "gcc $file_name -o ${file_base_name}",
 "selector" : "source.c",
 "Shell" : true,
 "working_dir" : "$file_path",
 "variants":
    [
     {
      "name": "Run",
      "cmd": "${file_base_name}"
     }
   ]
}
0
thebluebloo