Makefile不构建对象我如何告诉它

雅各布·加比

这是我的项目目录文件树:

.
├── entity.cpp
├── entity.hpp
├── entitytypes.hpp
├── main.cpp
├── Makefile
├── player.cpp
└── player.hpp

Makefile的内容是这样的:

CC=g++
CFLAGS=-Wall -pg
LDFLAGS=-lsfml-graphics -lsfml-window -lsfml-system
EXE=gametest

all: $(EXE)

%.o: %.c
    $(CC) -c $< -o $@ $(CFLAGS)

$(EXE): main.o entity.o player.o
    g++ $^ -o $@ $(LDFLAGS)

奇怪的是,这是我输入的输出make

g++    -c -o main.o main.cpp
g++    -c -o entity.o entity.cpp
g++    -c -o player.o player.cpp
g++ main.o entity.o player.o -o gametest -lsfml-graphics -lsfml-window -lsfml-system

如您所见,输出的最后一行对应于$(EXE)Makefile部分。它用正确的标志等链接程序。我的问题是,在构建每个目标文件时,根本没有考虑到我的%.o: %.c规则。这很明显,因为在构建对象时,g++之间没有很长的间隔-c,我没有写过。另外,它也丢失了我的$(CFLAGS)。甚至更奇怪,当我注释掉该%.o: %.c部分时,Makefile也会执行完全相同的操作。

在我看来,它似乎正在使用某种默认的构建命令,而忽略了我的。

我已经看过我过去编写的Makefile,据我所知,它们以相同的方式使用完全相同的宏,因此我对为什么会如此感到非常困惑。

肾上腺素

您将文件命名为* .cpp,而规则说* .c,这就是原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Eclipse试图在我的.svn目录中构建文件...如何告诉它停止?

即使我不告诉它,我的变量也在改变

谁能告诉我为什么对对象Staff使用Null以及如何解决它

如何告诉 TypeScript 我的对象的类型?

我如何告诉SBT使用Scala的2.12或2.13的每日构建?

我如何告诉Cygwin,依赖项是从源构建的?

我如何构建 Js 对象

如何创建“ svg”对象而不附加它?

告诉我如何以角度显示 json 对象值?

PHP 请告诉我如何访问对象键

我如何告诉相机只遵循游戏对象 x 方向

我如何让这个 RPG 工作,它告诉我 Y 和 N 没有定义

SharpRepository.EntityFramework 即使我告诉它不要缓存数据,我该如何防止它?

当我尝试从列表中删除一个对象时,它从不告诉我它已找到

我如何构建这个函数,它接受一组树对象并将它们连接成一个树对象?

我如何告诉打字稿在 js 中逐字包含一行而不解析它

c中的分段错误。谁能告诉我如何解决它?

我如何才能任意告诉Buildbot不要为给定的更改安排构建?

为什么ObjectOutputStream.readObject()返回Object类型的对象,而不返回我写入它的类型的对象?

我的Sprite不会执行我告诉它的操作吗?

在不告诉Automake如何构建`bin_PROGRAMS`的情况下指定`bin_PROGRAMS`的依赖关系。

我如何告诉AngularJS“刷新”

如何在不遍历所有Makefile的情况下构建启动映像

如何仅使用大文件来构建容器而不添加它?

当我使用程序来构建这个视图时,我该如何修复它?

Makefile:如何确定构建目标?

sympy:给定符号 u, v, w 我如何告诉它 u*u + v*v + w*w 是 1?

我的熊猫数据框中缺少数据。如何告诉python不要在新的数据框中包含它?

在C ++中,我如何告诉WHICH代码正在分配什么类型的对象?