Les autotools permettent generer les scripts pour la compilation d’un programme (configure/Makefile). Les fichiers qui sont modifiables quand on utilise les autotools sont les Makefiles.am et le configure.in ou le configure.ac et plus generalement les .in, .am et .ac, les autres fichiers seront genere automatiquement. Dans le cadre d’un projet sans autotools il faudra editer directement le configure (si il existe) et le Makefile.
Makefile : fichier d’entree de make, qui definit les fichiers a compiler ainsi que leur ordre de compilation, le nom du binaire final, etc
Makefile.am : fichier de configuration de automake, se resume souvent a specifier les sources a compiler et les fichiers a inclure dans la tarball (dist).
Makefile.in : fichier d’entree de autoconf, il est souvent genere par automake
configure.in : fichier de configuration de autoconf qui genere le configure, il contient les dependances, les regles a verifier pour que le programme soit compilable sur un systeme. Il peut aussi se nommer configure.ac.
config.h.in : ce fichier permet de passer des valeurs directement au programme, par exemple dans le cas d’options specifiable en parametre du configure (activation de module, par exemple utilisation de GNUTls a la place de openSSH) il produit le fichier config.h qui sera inclut dans les fichiers c ou c++ du programme.
config.guess : definit le systeme sur lequel on se trouve
config.log : log des autotools, a regarder quand quelquechose va mal
config.status : restaure la configuration en cours (Makefile/configure)
*.am : de maniere general les .am sont des fichiers d’entree de automake qui deviennent des .in
*.in : se sont les fichiers d’entree de autoconf qui deviennne leur equivalent sans le suffixe .in (config.h.in devient config.h)
ceci sont des commandes standard ou quasiment, disponible avec la plupart des projets et meme ceux n’utilisant pas les autotools.
./configure : script a lancer avant make, il permet de verifier que le systeme est en etat de compiler, qu’il ne manque aucune dependance, que les versions des programmes et librarie sont suffisante. c’est lui qui genere le Makefile.
make : compile le programme (il execute la premiere regle du Makefile, souvent equivanlent a make all)
make install : install le programme
make uninstall : desinstalle le programme installe avec make install
make dist : fait une archive(.tar.gz) du programme
make dist-bzip2 : fait un .tar.bz2
make distcheck : verifie que la tarball produite avec make dist soit valide (compile bien)
make clean : supprime les fichiers temporaires necessaire a la compilation (fichiers object, fichiers temporaires emacs, etc ...)
make distclean : supprime tous les fichiers ‘qui ne sont pas des sources’. Apres un distclean le repertoire est propre il ne contient ni binaire, ni fichier intermediare (Makefile.in, , il faut relancer un autogen.sh.
make check : execute des tests sur le programme, verifie que tout soit en ordres
Un exemple de fichier de conf emacs se trouve dans la ctafconf.
Abreviation des raccourcis |
C-x | signifie maintenir control et appuye sur x |
M-x | signifie maintenir alt et appuye sur x |
C-x 0 | signifie faire C-x, puis relache control et appuye sur 0 |
C-x C-x | signifie faire deux fois C-x |
M-x replace-string | signifie faire M-x puis ecrire replace-string |
C-M-x | signifie maintenir control et alt ,puis appuye sur x |
Base |
C-x C-h | l’aide !!! |
C-x C-c | FERMER emacs |
C-x C-f | ouvrir un fichier |
C-x C-r | ouvrir un fichier en read-only |
C-x C-q | passe le buffer en read-only ou pas |
C-x C-v | ouvrir un fichier different de celui en cours |
C-x C-s | sauvegarder le fichier |
C-x i | insertion d’un autre fichier |
C-x C-w | enregistrer sous ... |
C-x s | sauvegarder tous les fichiers |
C-g | MAGIQUE, arrete la commande en cours, supprime les C-x ou autres tappez ca vous sort de la galere |
ESC ESC | MAGIQUE, pareil que dessus quand vous etes bloque ou perdu (ESC = ECHAP) |
Deplacement |
C-x < | scroll left |
C-x > | scroll right |
C-pageUp | scroll left |
C-pageDown | scroll right |
C-p | ligne suivante |
C-n | ligne precedente |
C-home | remonte en debut du buffer |
C-end | va a la fin du buffer |
C-a | va au debut de la ligne (home) |
C-e | va a la fin de la ligne (end) |
C-left | va au debut de mot |
C-right | va a la fin du mot |
C-down | va a la fin du paragraphe |
C-up | va au debut du paragraphe |
C-M-p | parenthese precedente |
C-M-n | parenthese suivante |
C-x C-n | positionne le curseur sur la colonne en cours quand c’est possible, super utile pour editer des tableaux ou pour avoir le curseur toujours en debut de ligne quand on se deplace |
C-u C-x C-n | desactive le mode “curseur toujours sur la meme colonne” quand on change de ligne |
Buffer |
C-k | kill un buffer (fermeture du fichier associe) |
C-x b | change le buffer actif (bascule entre l’ancien buffer et le nouveau) |
C-x C-b | affiche la liste des buffers |
C-mouse1 | affiche la liste des buffers dans un menu sous X(encore mieux!) |
C-x right | passe au buffer suivant |
C-x left | passe au buffer precedent |
C-x d | affiche une arborescence des fichiers (dired) |
C-x 8 | convertie les accents et autres bidules pas net en net! |
Fenetres et splits |
C-x 0 | remet emacs en une fenetre |
C-x 1 | split la fenetre courante verticalement |
C-x 2 | split la fenetre courante horizontalement |
C-x o | change le curseur de fenetre |
C-x ^ | elargie la fenetre en courante |
C-x 5 2 | ouvre un nouveau buffer dans une nouvelle frame sous X |
C-x 5 0 | kill la nouvelle frame (attention C-x C-c kill emacs) |
Recherche |
C-s | recherche (repeter C-s pour continuer la recherche) |
C-r | recherche a l’envers (repeter C-s pour continuer la recherche) |
M-x replace-string | remplace toute les occurences d’une chaine de caractere par une autre |
C-w | faite C-s pour la recherche puis C-w pour rechercher ce qui se trouve sous votre pointeur! et encore C-w et encore.. |
Copier Coller Couper Zigouiller |
C-<space> | met une marque pour le debut d’operation |
C-y | coller (clique milieu) |
M-y | kill-ring , faite C-y puis M-y pour allez dans l’historique des copier coller |
C-w | couper depuis la marque |
M-w | copier depuis la marque |
M-h | selectionne le paragraphe |
C-x TAB | insert le contenue d’un autre buffer dans le buffer en cours |
C-x C-o | supprime les lignes vides juste apres le curseur |
C-x C-t | inverse la ligne actuelle avec celle du dessus |
C-x . | set the fill prefix |
M-q | rearange le paragraphe suivant le prefix (ex si le prefix = “;; “) ;; line1
;; line2
;; line3
devient
;; ln1 ln2 ln3
(setq fill-column 80) pour definir la longeur de la ligne
|
Macro clavier |
C-x ( | debute l’enregistrement d’une macro clavier |
C-x ) | stop l’enregistrement de la macro |
C-x e | rappelle la derniere macro (C-z) dans la ctafconf |
Vrac |
M-! | execute une commande |
M-$ | verifie l’orthographe du mot |
C-u M-! | execute une commande et insert le resultat dans le buffer en cours |
M-/ | fait de la completion de mot |
C-x C-p | marque page |
C-c C-c | commente le code (utilise C-<espace>) (cpp,c,...) |
C-u C-c C-c | decommente le code (utilise C-<espace> aussi comme repere de debut) |
M-q | alligne les slashs (’\’) en fin de ligne (#define ) |
M-i | indente proprement |
C-x l | compte le nombre de lignes |
C-x u | undo |
C-_ | undo |
C-x C-u | upcase |
C-x C-l | lowcase |
M-S-% | query-replace |
C-x C-e | evalue l’expression pointe par le curseur |
M-x term | avoir un term (jolie) M-x shell pour en avoir un moche |
M-x speedbar | lance une nouvelle fenetre pour naviguer dans les fichiers |
M-x delete-trailing-whitespace | supprime tous les espaces en fin de lignes |
M-x global-font-lock-mode | coloration synthaxique |
M-x column-number-mode | compte le nombre de colonne |
M-x recover-file | restaure un fichier |
M-x mouse-wheel-mode | active le scroll de la souris |
M-x normal-erase-is-backspace-mode | definit le comportement de la touche backspace |
M-x iso-accent-mode | permet d’avoir les accents a l’aide des touches mortes: ‘, “, ... |
commandes principales de VI:
ZZ | quitte et sauvegarde |
i | insert |
a | append |
I | insert début de ligne |
A | append en fin de ligne |
[n]x | supprime n char |
[n]dd | supprime n ligne |
[n1,n2]dd | supprime de n1 à n2 |
D | supprime tous les char de la ligne |
[n]dw | supprime un mot |
o | ajoute une ligne sous la ligne courante |
O | ajoute une ligne sur la ligne courante |
r[char] | remplace le char sélectionné par char |
j k l m | déplacement |
:[n1,n2]t[n3] | copy de n1 à n2 après n3 |
:[n1,n2]m[n3] | envoie de n1 à n2 après n3 |
:t [file] | copy le contenu du fichier après la ligne courante |
:[n1,n2]w [file] | écrit de n1 à n2 dans file |
p | colle la ligne après la ligne courante (coupé avec dd) |
:[n1,n2]s[/char1/char2] | substitue le premier char1 trouvé par char2 entre n1 et n2 |
:[n1,n2]s[/char1/char2]/g | substitue tous les char1 par char2 entre n1 et n2 |
:/[text] | recherche text vers le haut |
:?[text] | recherche text vers le bas |
n | prochaine occurrence vers le haut |
N | prochaine occurrence vers le bas |
J | joint deux lignes |
u | annule la dernière modif |
U | annule les modifications de la ligne courante |
:set number | affiche les numéros de ligne |
:![cmd] | lance une commande sans quitter vi |
fonctions interessante:
do_events() : a mettre dans une boucle, pour raffraichir l’affichage pendant le traitement
gtk_main_iteration() : boucle d’iteration gtk