c++ - Unix 中的 MakeFile 错误

标签 c++ linux unix makefile

我在执行 makefile 时遇到问题。我正在尝试从 yesno.cpp 和guess.cpp 制作一个“猜测”文件。我要从前面提到的文件创建 yesnno.o 文件和guess.o 文件。我的代码如下:

g++ -c -DDEBUG yesno.cpp
g++ -c -DDEBUG guess.cpp

然后我应该链接这两个 .o 文件并创建一个名为guess 的可执行程序。我的代码如下:

g++ -o guess guess.o yesno.o

这将在我的目录中创建包含以下文件的猜测文件:

guess guess.cpp guess.o yesno.cpp yesno.h yesno.o

一切似乎都很好,直到我尝试提交此内容,但我不断收到错误消息:

"make: *** No targets specified and no makefile found. Stop.

Your makefile does not build 'guess' when invoked"

我不确定我做错了什么。请帮忙!

最佳答案

makefile 是程序 make 用于构建项目的文件。尝试在目录中创建一个名为 Makefilemakefile 的文件,其中包含以下内容。

CXX = g++

.PHONY: all

.SECONDARY:

all: guess

guess: guess.o yesno.o
    $(CXX) -o $@ $^

%.o: %.cpp yesno.h
    $(CXX) -c -DDEBUG $<

要构建您的项目,请运行 make。例如,您可以运行 make -j2 来并行运行最多 2 个作业。

关于c++ - Unix 中的 MakeFile 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405554/

相关文章:

linux - GNU 并行运行的作业似乎不是并行的

c - 尝试在终端中运行 C 程序时出现问题

c - 在 C 工作线程中实现计时器的方法

c++ - Template类拷贝构造函数的写法

c++ - 编译我的代码以通过 xcode 在 OSX 中使用 mongodb c 驱动程序

c++ - 针对 C++20 契约(断言)进行测试

c++ - Libev C++ 无法停止多线程应用程序中的动态循环

c++ - 是 T Min(T, T);总是比 const T& Min(const T&, const T&) 好;如果 sizeof(T) <= sizeof(void*)?

c - 无法交叉编译 mip

java - 当页面代码未知时如何从扩展 ASCII 转换为 EBCDIC,反之亦然