web-dev-qa-db-fra.com

Inclure les fichiers d'en-tête à l'aide de l'option de ligne de commande?

Est-il possible de spécifier des fichiers d'en-tête supplémentaires à inclure à partir de la ligne de commande (en utilisant GCC 4/C++)?

Ou existe-t-il une autre manière d'inclure des fichiers, sauf avec #include?

Contexte: J'essaie de compiler une grande base de code sur mon propre PC. Le code est généralement compilé dans un cluster, avec un système de construction compliqué (SoftRelTools anybody?), Qui est étroitement lié au système d'exploitation, de sorte qu'il est pratiquement impossible de l'installer ailleurs (littéralement des centaines de makefiles et de scripts Shell, et du matériel chemins codés vers les lecteurs réseau). Cependant, le code réel est assez simple et se compile bien, MAIS il manque beaucoup d'inclusions (la plupart du temps à la "include <vector>" et "include <math.h> "). Je suppose que le système de construction s'occupe généralement de cela, mais je dois parcourir le code et ajouter les inclus manuellement, ce que je préfère éviter.

65
jdm

I trouvé l'option -include. Est-ce ce que tu veux?

-inclure le fichier

Traitez le fichier comme si "#include" file "" apparaissait comme la première ligne du fichier source principal. Cependant, le premier répertoire recherché est le répertoire de travail du préprocesseur au lieu du répertoire contenant le fichier source principal. S'il n'y est pas trouvé, il est recherché normalement dans le reste de la chaîne de recherche "#include" ... "".

Si plusieurs options -include sont fournies, les fichiers sont inclus dans l'ordre dans lequel ils apparaissent sur la ligne de commande.

73
foraidt

Depuis le manuel de gcc:

-inclure le fichier

Traiter le fichier comme si "#include "file" "apparaît comme la première ligne du fichier source principal. Cependant, le premier répertoire recherché est le répertoire de travail du préprocesseur au lieu du répertoire contenant le fichier source principal. S'il n'y est pas trouvé, il est recherché dans le reste de le "#include "..." "chaîne de recherche normale.

Si plusieurs options -include sont fournies, les fichiers sont inclus dans l'ordre dans lequel ils apparaissent sur la ligne de commande.

25
YuppieNetworking

Selon la documentation de gcc, le commutateur de ligne de commande "-include file" ferait l'affaire.

9
tibur