对于这个项目,我有 3 个文件:driver.cpp、bet.cpp 和 bet.h。
当我提交这个项目时,我编辑了 driver.cpp 以包含#include bet.cpp。问题是 driver.cpp 应该保持未经编辑。我无法重新提交文件我只能重新提交一个Makefile.
所以挑战在于创建一个 Makefile,以某种方式将行“#include 'bet.h'”添加到 bet.cpp 文件中,以便它可以在我老师的端正确运行。
添加更多上下文。我搞砸了并编辑了 driver.cpp。这导致它在我这边工作,但在我老师这边出现编译错误。编译错误扣50分,我跟她谈过,她不能随便乱改,哪怕是1行代码的小错误。
但是如果 Makefile 是唯一的问题,她可以重新评分并且只为此扣分。
以下是每个文件的原始标题:
driver.cpp:
#include <iostream>
#include <string>
#include "bet.h"
...
bet.cpp:
#include <iostream>
#include <string>
#include <stack>
#include <sstream>
...
bet.h:
#ifndef ASSIGNMENT_3_BET_H
#define ASSIGNMENT_3_BET_H
#include <iostream>
#include <string>
...
这是建议的 Makefile GPT。它没有用。
CXX = g++
CXXFLAGS = -std=c++11 -Wall -Wextra
driver: driver.o bet.o
$(CXX) $(CXXFLAGS) -o driver driver.o bet.o
driver.o: driver.cpp bet.h
$(CXX) $(CXXFLAGS) -c driver.cpp
bet.o: bet.cpp
$(CXX) $(CXXFLAGS) -DBET_INCLUDE_HEADER -c bet.cpp
clean:
rm -f driver *.o
有什么想法吗?还是仅通过编辑 makefile 就无法解决此问题?
修改文件本身会导致
bet.o
总是过时,所以你可以使用评论中 Eljay 的建议,或者从 bet.cpp
生成一个新的源文件,成为构建 bet.o
. 的来源
...
driver.o: driver.cpp bet.h
$(CXX) $(CXXFLAGS) -c driver.cpp
bet_fixed.cpp: bet.cpp
echo '#include "bet.h"' | cat - bet.cpp > bet_fixed.cpp
bet.o: bet_fixed.cpp
$(CXX) $(CXXFLAGS) -DBET_INCLUDE_HEADER -c bet_fixed.cpp -o bet.o
clean:
rm -f driver *.o bet_fixed.cpp