Je veux apprendre le C/C++. Ici, mon exigence est de ne pas utiliser d'IDE. Je veux exécuter mon programme C/C++ de la manière suivante,
Après avoir suivi les 4 étapes ci-dessus, une sortie ou des erreurs doivent apparaître dans la fenêtre du terminal.
J'ai essayé d'utiliser le script Nautilus, mais il a lamentablement échoué après plusieurs essais.
S'il vous plaît voir la capture d'écran (qui ne fonctionne pas comme prévu).
J'essaie de faire comme ci-dessous, cochez ici
1. Créez le fichier de script Nautilus et rendez-le exécutable:
touch "$HOME/.local/share/nautilus/scripts/MyC++Run"
chmod +x "$HOME/.local/share/nautilus/scripts/MyC++Run"
2. Voici le contenu du script. Il crée un script auxiliaire (supprimé automatiquement), qui est exécuté dans un nouveau terminal gnome. Vous pouvez ainsi voir les messages d'erreur dans la fenêtre du terminal:
#!/bin/bash -e
# Get the list of the selected in Nautilus items as an array $ITEM_LIST
IFS_BAK=$IFS
IFS=$'\t\n'
ITEM_LIST=($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)
IFS=$IFS_BAK
# Create aux script, that compile and execute the program. Run the script in gnome-terminal
compile_and_exec_program() {
OUT="${DIR}/${NAME}.out" # Define the name of the output file
AUX="${DIR}/${NAME}.bash" # Define the name of the aux script
printf '#!/bin/bash -e\n' > "${AUX}" # Create the auxiliary script
printf '%s "%s" "%s" && "%s"\n' "${1}" "${OUT}" "${item}" "${OUT}" >> "${AUX}"
printf 'rm -f "%s"\nexec bash' "${AUX}" >> "${AUX}"
chmod +x "${AUX}" # Make the aux script exec and run it
Nohup gnome-terminal -x sh -c "$(echo \'"${AUX}"\')" >/dev/null 2>&1 &
}
# For each selected item: get its name, location, etc. and proceed...
for item in "${ITEM_LIST[@]}"; do
ITEM="$(basename "${item}")" # Get the item name (exclude the path)
DIR="$(dirname "${item}")" # Get the path to the item (exclude the name)
NAME="${ITEM%.*}" # Get the name (exclude the extension)
EXT="${ITEM##*.}" # Get the extension (exclude the name)
# If the item is a file and its extension is `c` or `cpp`, then compile and execute
if [ -f "$item" ]; then
if [ "$EXT" == "c" ]; then compile_and_exec_program "gcc -o"
Elif [ "$EXT" == "cpp" ]; then compile_and_exec_program "g++ -o"
else notify-send "Wrong extension of the selected file: $ITEM"
fi
else
notify-send "The selected item is a directory: $ITEM"
fi
done
Explications supplémentaires : L'utilisation d'un script auxiliaire est le moyen le plus robuste d'exécuter plusieurs commandes dans un nouveau terminal gnome, que j'ai trouvé pendant que je travaillais. ne de mes réponses .
En fonction des paramètres d'entrée de la fonction compile_and_exec_program
, le script auxiliaire généré par la section printf
sera semblable à:
#!/bin/bash -e
g++ -o /work/dir/project.cpp /work/dir/output.out && /work/dir/project.out
rm -f /work/dir/project.bash
exec bash
Où &&
signifie (comme d'habitude) si la commande située à gauche est exécutée avec succès, exécutez la commande située à droite. La ligne rm -f /work/dir/project.bash
supprimera le script auxiliaire lui-même. La dernière ligne exec bash
a l'intention de garder ouverte la nouvelle fenêtre gnome-terminal.
Cette partie $(echo \'"${AUX}"\')
a l'intention d'imprimer des guillemets simples autour du nom du script aux. Il est important que le nom du script contienne des caractères spéciaux. Je ne pouvais pas trouver un autre moyen de le faire. Une autre façon de ne noter que les espaces consiste à utiliser: ${AUX/\ /\\ }
.
Voici un exemple de script, qui crée un fichier journal dans lequel vous pouvez voir les messages d'erreur du processus.
3. Voici une démonstration (à partir de la version précédente ) des fonctionnalités du script:
Vous avez un malentendu de base sur la programmation C/C++: ce ne sont pas des scripts, interprétés au moment de l'exécution. Au lieu de cela, ces programmes doivent être compilés et convertis en programmes exécutables.
En supposant que le nom de votre fichier est Cpp1.cpp
, vous devrez alors exécuter le terminal suivant:
gcc -o Cpp1 Cpp1.cpp
Le résultat obtenu, Cpp1
sera un fichier binaire exécutable pouvant être exécuté à l'aide de la commande ./Cpp1
connaissances sur l'ouverture et l'utilisation des fenêtres.