Compilation g++;:致命错误:无法为多个文件指定-o和-c、-S或-E

Compilation g++;:致命错误:无法为多个文件指定-o和-c、-S或-E,compilation,g++,makefile,Compilation,G++,Makefile,我正在尝试使用其他库文件编译库文件。我正在makefile中使用以下行创建gameobject.o: lib/gameobject.o: src/gameobject.cpp src/vector.hpp lib/objectevent.o lib/sprite.o g++ $^ -c -o $@ $(SFML_FLAGS) g++: fatal error: cannot specify -o with -c, -S or -E with multiple files 所有的依赖项都正确,

我正在尝试使用其他库文件编译库文件。我正在makefile中使用以下行创建gameobject.o:

lib/gameobject.o: src/gameobject.cpp src/vector.hpp lib/objectevent.o lib/sprite.o
g++ $^ -c -o $@ $(SFML_FLAGS)
g++: fatal error: cannot specify -o with -c, -S or -E with multiple files
所有的依赖项都正确,但是当它试图编译gameobject.o时,我得到了以下错误:

lib/gameobject.o: src/gameobject.cpp src/vector.hpp lib/objectevent.o lib/sprite.o
g++ $^ -c -o $@ $(SFML_FLAGS)
g++: fatal error: cannot specify -o with -c, -S or -E with multiple files

我对使用make/separating编译还是有点陌生,所以我不太确定应该做什么。我是否只需要编译它而不设置输出?我是否必须在不使用任何其他.o文件的情况下编译gameobject.o?如果这是真的,那么如果不能用其他库编译库,大型对象的编译时间不会变得很大吗?或者我只是读错了这个错误?

您没有在这里构建库文件。
.o
文件是一个对象文件。通常每个源文件有一个对象文件。当您使用编译器的
-c
选项时,它接受单个源文件并将其编译成单个目标文件。无法将其他对象文件添加到现有对象文件中,因此将
.o
.cpp
文件与
-c
一起添加到同一编译器行中是行不通的

如果您想创建一个库,它可能类似于
libfoo.a
(这里的“a”代表“归档”)。如果您想创建一个可执行文件,您也可以这样做


在我们描述如何获得结果之前,您需要更清楚地了解您想要的结果。

在我将一个解决方案的一些项目合并到一个项目中之后,我遇到了同样的问题。我发现有两个同名的.cpp文件,在我重命名其中一个后,问题就解决了。

我不熟悉
qt
在哪里更改这些编译器选项?据我所知,这个问题与qt无关。如果您有问题(并且您无法通过搜索找到答案),请提出一个新的问题,并提供完整的详细信息和适当的标签,以吸引可能知道如何提供帮助的人的注意。我应该编写
g++
而不是
qt
?我不知道,因为我不知道你想做什么。我遇到的问题和最初的OP一样,我不知道如何使用答案。我的问题现在解决了,方法是删除pro文件中的
*
,并命名每个文件