URL:     https://linuxfr.org/forums/programmation-c--2/posts/resolu-generation-d-entetes-precompilees-avec-gcc
Title:   [résolu] Génération d'entêtes précompilées avec GCC
Authors: jseb
Date:    2026-10-11T16:54:23+02:00
License: CC By-SA
Tags:    raylib, nuklear, gcc, headers et header_checks
Score:   0


Bonjour,

J'essaie de générer des entêtes avec GCC , pour éviter de compiler à chaque fois d'imposants headers.
L'entête se génére bien (j'obtiens un fichier .h.gch). Le fichier est placé au même endroit que le .h, mais n'est jamais utilisé par défaut.
J'ai vérifié avec l'option -H qui donne le nom et la hiérarchie des entêtes utilisées (mon entête est un premier niveau, pas inclue par d'autres). Ce sont bien des .h à chaque fois.

> $ ls
total 16M
1.2M nuklear.h            136K raylib.h               12K raylib-nuklear-test.c 
3.9M nuklear.h.gch        3.6M raylib.h.gch           4.0K test_simple_nuk.c
56K raylib-nuklear.h      532K raylib-nuklear-test.o  504K test_simple_nuk.o
5.4M raylib-nuklear.h.gch  164K raylib-nuklear-test.png


> $ gcc -c -H test_simple_nuk.c -I.
x raylib-nuklear.h.gch
. raylib-nuklear.h
.. raylib.h
... /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/stdarg.h
... /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/stdbool.h
.. nuklear.h  # ça coince ici pendant 1 seconde
... /usr/lib/gcc/x86_64-pc-linux-gnu/16/include/stdint.h
(etc)
.. nuklear.h # oui il repasse (mais sans conséquences il y a évidemment un include guard)

Le seul .gch qui soit utilisé est raylib-nuklear.h qui lui même inclue raylib.h puis nuklear.h

L'include raylib.h passe en premier, sans aucune bizarrerie du préproc. J'ai déjà plus de doutes pour celui de nuklear.h . Mais aucun des deux n'est ignoré au profit du .gch , pourtant présent.

Merci d'avoir lu.

