Forum Programmation.c Indent & makefiles

Posté par .
Tags : aucun
0
25
août
2004
M'sieurs-dames, bonjour.

Ma première question porte sur GNU indent ; j'ai pu l'amener à indenter mon code C à peu près comme je voudrais... sauf pour l'accolade de début de corps de fonctions: je voudrais obtenir:
int main(void){
/* ... */
}
mais à mon grand dam je n'ai pas pu trouver l'option qui va bien. Quelqu'un pourrait-il me tirer d'affaire ?

Deuxième question, à propos des makefiles, ou plus généralement, de l'automatisation du processus de développement d'un projet en C. Pour des projets en java, impossible de se passer de scrips Ant aux petits oignons. Je recherche l'équivalent pour des projets en C, c'est-à-dire, des exemples de Makefiles pour GNU Make (ou d'autres scripts, y'a que le résultat qui compte) qui automatisent:

- la compilation des fichiers sources
- la génération de la documentation des sources via doxygen
- la génération de la documentation du projet écrite en RestructuredText ou docbook
- le lancement de tests unitaires CUnit ou check
- le profiling / détection de fuites de mémoire
- la compilation continue (récup du HEAD cvs -> compilation -> tests unitaires -> email des résultats des tests)
- la création d'une nouvelle version du projet (nouveau tag pour tous les fichiers du projet -> compilation, etc -> génération de paquets/d'archives pour cette nouvelle version)

Merci d'avance,
je vous embrasse pas mais le coeur y est ;)
  • # Makefile

    Posté par (page perso) . Évalué à 1.

    Pour le Makefile, voici un exemple qui j'espère te parlera

    usage : "make" ou "make all" pour faire list, doc, cafe

    ou 'make cafe'...
    "make clean"....

    ----------------------
    all: list doc cafe

    list : functions.o parser.o daemon.c daemon.h
    gcc -Wall daemon.c functions.o parser.o -o list


    functions.o : functions.c functions.h
    gcc -Wall -c functions.c -o functions.o

    parser.o : parser.c parser.h
    gcc -Wall -c parser.c -o parser.o

    doc:
    tes commandes ici....

    cafe:
    ton cafe ici

    clean:
    rm -f list
    rm -f *.o

    distclean:
    rm -f list
    rm -f *.o
    rm -f *~
    rm -f *.core

    -------------------
    hopes this helps
    • [^] # Re: Makefile

      Posté par . Évalué à 1.

      à la place de
      -------------------------------------------------------
      functions.o : functions.c functions.h
      --> gcc -Wall -c functions.c -o functions.o
      parser.o : parser.c parser.h
      --> gcc -Wall -c parser.c -o parser.o
      -------------------------------------------------------

      on peut aussi définir des règles pour make comme par exemple la règle suivante qui définit comment obtenir un .o à partir d'un .c
      -------------------------------------------------------
      .c.o:
      --> gcc $(CFLAGS) -c $*.c
      -------------------------------------------------------
      $* est une variable automatique (point 10.5.3 de la doc de make http://www.gnu.org/software/make/manual/html_mono/make.html#SEC111(...) ). Le manuel de make, c'est du bonheur tellement y'a de trucs dedans :)

      gaffe à pas oublier les tabulations (-->) en début de ligne
  • # Dur.

    Posté par (page perso) . Évalué à 2.

    les outils qu'on peut lance depuis ce genre de makefile :

    lint, splint : syntaxe, securite
    pcmd : Analyse poussee de code (notemment de copier-coller abusifs)
    doc : doxygen
    tags : ctags, etags
    Syntaxe de projet : indent

    tu google "makefile" et le nom d'un des outils et t'aura un exemple de makefile.

    comme la : http://www.control.auc.dk/~03gr838/cd/Net-snmp/Net-snmp-5.0.1/Makef(...)

    sinon Les equivalents make :

    CMake, MakeNG, Bakefile, Jam, BJam, premk, premake, le CDT 2.0 d'eclipse.

    premake est bien pour generer pour plusieurs plate-forme (VS, makefile, etc)

    Cela dit Ant + java est connu pour etre bien plus avance car avec beaucoup plus d'integration...
    Si on pouvait avoir l'equivalent... a la place des configure.in et autres horreurs...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.