2017-08-31 2 views
-4

J'écris un langage de programmation, qui convertit les fichiers source en C++ et les compile.C++: Importer/Inclure le système

Je veux ajouter un moyen de travailler avec un grand nombre de fichiers, en les compilant à .o fichiers, ce qui rend possible l'utilisation de fichiers makefile. Une explication mieux (merci @Beta):

Vous avez un outil qui lit un fichier source (foo.FN) et écrit la source de C et les fichiers en-tête (foo.cpp et foo.h). Ensuite, un compilateur (gcc) lit ces fichiers source et en-tête (foo.cpp et foo.h) et écrit un fichier objet (foo.o). Et peut-être il existe des interdépendances (bar.cpp besoins foo.h).

Le problème est: mon interprète après la compilation GCC ils suppriment la .cpp et .h. Parce que cela, il ne peut pas utiliser #include, parce que quand il va compiler, les fichiers référencés n'existent plus. Comment je peux résoudre ça?

+0

Il est assez difficile de comprendre ce que vous demandez. Habituellement, la compilation est automatisée à l'aide de 'Makefile',' Rakefile' ou de tout autre projet ** automation **. Je ne pense pas que vous vouliez ** supprimer ** votre code source après la compilation, je pense que vous voudrez peut-être nettoyer l'état de votre projet de temps en temps (cela signifie: supprimer les objets intermédiaires '.o', ou suppression de l'exécutable final lié). L'utilisation d'un logiciel d'automatisation de construction vous permet de compiler uniquement les fichiers intermédiaires qui dépendent des sources modifiées, réduisant ainsi le temps de compilation. –

+0

@MatteoRagni Mon programme va créer des fichiers C++ et le compiler, donc je ne veux pas que l'utilisateur voit les fichiers parce qu'il va travailler avec ma langue, pas C++. Pour cela, j'ai besoin de supprimer les fichiers avant la compilation. Pour que l'utilisateur puisse utiliser 'makefiles' ou quelque chose comme ça, le programme doit compiler en' .o', mais je ne veux pas que les fichiers C++ soient sauvegardés. –

+0

Désolé, mais à mon humble avis, vous devez réécrire soigneusement votre question. J'ai vraiment du mal à comprendre ce que vous faites et ce que vous voulez accomplir. –

Répondre

0

Il y a deux parties à la réponse.

D'abord, n'écrivez pas de fichiers d'en-tête explicites. Vous savez ce qu'ils doivent contenir, exécutez simplement l'opération #include vous-même.

Deuxièmement, n'écrivez pas le fichier .cpp non plus. Utilisez gcc -x c++ - pour lire le code à partir de l'entrée standard et faites en sorte que votre outil émette C++ vers la sortie standard, afin que vous puissiez exécuter tool foo.FN | gcc -c -o foo.o -x c++ - pour produire foo.o.

+0

Merci pour la réponse. Savez-vous quelque part comment lire le 'import' Python ou GoLang? –

+1

@FelipeNascimento: Tout tutoriel de base. Mais quand vous êtes toujours aux prises avec cela, écrire votre propre langue ne sera pas réaliste. – MSalters

+0

Je demande comment le compilateur fait l'importation. Par exemple, je sais que le '# include' de C++ copier le contenu de l'en-tête. –