【发布时间】:2018-02-09 22:49:20
【问题描述】:
我正在编写一种编程语言,它将源文件转换为 C++ 并编译它们。
我想添加一种处理大量文件的方法,将它们编译为.o 文件,从而可以使用makefile。更好的解释(感谢@Beta):
您有一个工具可以读取源文件 (
foo.FN) 并写入 C++ 源文件和头文件(foo.cpp和foo.h)。然后编译器(gcc)读取这些源文件和头文件(foo.cpp和foo.h)并写入一个目标文件(foo.o)。并且可能存在相互依赖关系(bar.cpp需要foo.h)。
问题是:我的解释器在 GCC 编译它们之后删除了 .cpp 和 .h。因为这个,它不能使用#include,因为当它编译时,引用的文件不存在了。我该如何解决这个问题?
【问题讨论】:
-
很难理解您的要求。通常编译是通过
Makefile、Rakefile或任何其他构建自动化项目自动进行的。我不认为你想在编译后删除你的源代码,我想你可能想不时地clean你的项目的状态(这意味着:删除中间对象.o,或删除最终链接的可执行文件)。使用构建自动化软件,您可以只编译依赖于已更改源的中间文件,从而减少编译时间。 -
@MatteoRagni 我的程序将创建 C++ 文件并编译它,所以我不希望用户看到这些文件,因为他将使用我的语言,而不是 C++。为此,我需要在编译之前删除文件。为了让用户能够使用
makefiles或类似的东西,程序需要编译为.o,但我不想保存C++文件。 -
抱歉,恕我直言,您必须仔细重写您的问题。我真的很难理解你在做什么以及你想要实现什么。
-
@MatteoRagni 我的英语有严重问题。我编辑了帖子,希望我改进了它。
-
您有一个工具可以读取源文件 (
foo.FN) 并写入 C++ 源文件和头文件(foo.cpp和foo.h)。然后编译器(gcc)读取这些源文件和头文件(foo.cpp和foo.h)并写入一个目标文件(foo.o)。并且可能存在相互依赖关系(bar.cpp需要foo.h)。对吗?