Accueil
 

Autotools

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.

Fichiers

  • 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)

Commandes

ceci sont des commandes standard ou quasiment, disponible avec la plupart des projets et meme ceux n’utilisant pas les autotools.

  • ./autogen.sh : (re)genere l’emsemble des fichiers de configuration du projet (a utiliser apres un checkout), il execute notamment :
    1. aclocal (gestion des macro m4, il rassemble les macros dans aclocal.m4. ces macro sont utiliser par automake, autoconf et consors pour s’assurer de l’etat du systeme)
    2. automake (genere des Makefile)
    3. autoconf (genere des configure)
    4. autoheader (se charge des parametres a fournir au compilateur (lib, include, ...))
    5. configure
  • ./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

Emacs

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: ‘, “, ...

VI

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

Astuces

gtk

fonctions interessante:

  • do_events() : a mettre dans une boucle, pour raffraichir l’affichage pendant le traitement
  • gtk_main_iteration() : boucle d’iteration gtk
 
programmation.txt · Last modified: 2008/04/29 10:49 by ctaf
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki