Comment inclure des fichiers de plusieurs répertoires en C sous Linux?

gcc main.c -o main -I include 

Je crée une petite application c où tous mes fichiers source sont dans le répertoire src alors que tous les fichiers d’en-tête du répertoire include, ainsi que tous les fichiers communs, sont dans le répertoire commun. Tous ces trois répertoires sont situés dans un répertoire nommé “app” avec le répertoire main.c. Maintenant, j’essaie de lancer main.c qui contient la directive #include, y compris les fichiers d’en-tête inclus et les appels de fonction aux fichiers .c, dans les répertoires commun et src. J’utilise -I mais cela n’est utile que pour une indication de chemin de répertoire. Comment puis-je dire au compilateur de regarder à la fois dans les répertoires src common et include pour résoudre les appels. Suggérez-moi une commande ou un fichier pour inclure le chemin de plusieurs répertoires lors de la compilation avec gcc.

Plusieurs options -I sont autorisées. La description de l’option -I dans Options pour la recherche dans l’annuaire indique:

Ajoutez le répertoire dir à l’en-tête de la liste des répertoires dans lesquels rechercher les fichiers d’en-tête. Cela peut être utilisé pour remplacer un fichier d’en-tête système, en remplaçant votre propre version, car ces répertoires sont recherchés avant les répertoires de fichiers d’en-tête système. Cependant, vous ne devez pas utiliser cette option pour append des répertoires contenant des fichiers d’en-tête système fournis par le fournisseur (utilisez -isystem pour cela). Si vous utilisez plusieurs options -I , les répertoires sont analysés de gauche à droite. les répertoires système standard viennent après.

Par exemple:

gcc main.c -o main -Iinclude -Isrc / include -Icommon / include

Notez que si main.c utilise des fonctions implémentées dans un ou plusieurs autres fichiers .c les autres fichiers .c devront également être compilés et liés dans le programme binary final. Par exemple:

gcc main.c src / another.c -o main -Iinclude -Isrc / include -Icommon / include