你可以使用makefile从.o目标文件创建一个c ++文件吗?

时间:2017-05-08 20:43:28

标签: c++ makefile

我要做的是从目标文件创建一个c ++文件,但我无法找到一种方法。

INCLUDEDIR = ../headers
CXXFLAGS   = -std=c++11 -I $(INCLUDEDIR) -Wall -Wfatal-errors -O2

all:primeFactors.o 

primeFactors.o: primeFactors.cpp $(INCLUDEDIR)/primeFactors.h
    g++ $(CXXFLAGS) -c $< -o $@

当我尝试构建这个时,我得到了

  

make: *** No rule to make target 'primeFactors.cpp', needed by 'primeFactors.o'. Stop.

我理解但是当我拿出primeFactor.cpp参数时,我会被告知make文件没什么可做的。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

总的来说;不,你做不到。目标文件(.o文件)是代码通过编译器前端(解析语言)优化器(使其快速运行)和编译器后端(生成将在其上运行的代码)的结果你的CPU)。 此过程可逆。你不能从编译代码回到源代码。

答案 1 :(得分:0)

  

可以使用makefile从.o对象文件创建c ++文件吗?

makefile只有在您有基础工具的情况下才能执行此操作。使用makefile完成其工作的make没有任何内置机制来解决这个问题。

您的makefile有制定primeFactors.o的规则。

primeFactors.o: primeFactors.cpp $(INCLUDEDIR)/primeFactors.h

它表示构建primeFactors.cpp需要$(INCLUDEDIR)/primeFactors.hprimeFactors.o。如果您没有这些文件,或者没有规则来构建这些文件,则make无法构建primeFactors.o