如何制作将一行代码添加到 .cpp 的 Makefile? (#include.h)

问题描述 投票:0回答:1

对于这个项目,我有 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 就无法解决此问题?

c++ makefile
1个回答
0
投票

修改文件本身会导致

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
© www.soinside.com 2019 - 2024. All rights reserved.