SDL应用程序的Makefile仅在项目提前构建时运行
Makefile for SDL application only runs when the project has been built ahead of time
好了,这个绝对让我大吃一惊。基本上,我已经设置了一个简单的makefile,它运行g++,用SDL2构建我的基本c++项目。现在,当我运行这个makefile时,它给了我一堆"未定义的崇敬'SDL_Init'"的错误,以及我在程序中使用的SDL2中的每个函数。但是,当我从makefile复制命令并从终端运行它时,一切都很好。无需更改文件并再次运行make文件,它就可以正常编译。
我运行的是Elementary OS Loki, g++版本5.4.0 20160609,make版本4.1,libsdl2-dev版本2.0.4+dfsg1-2ubuntu2
下面是我正在使用的make文件:
Makefile
CC = g++
CFLAGS = -g -Wall
LFLAGS = -lSDL2
ONAME = patchworkrpg
all: $(ONAME)
$(CC) $(ONAME).cpp $(LFLAGS) -o $(ONAME)
patchworkrpg.cpp
#include <stdio.h>
using namespace std;
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char* args[]) {
SDL_Window* window = NULL;
SDL_Surface* surface = NULL;
if(SDL_Init(SDL_INIT_VIDEO) < 0) {
cout << "SDL Failed to initn";
}
else
{
}
}
我已经把一些多余的东西划掉了,但这就是要点。就像我说的,唯一抛出错误的是makefile,而不是上面的文件在makefile之外用相同的命令编译。
编辑:额外信息
运行makefile时出错:
g++ patchworkrpg.cpp -o patchworkrpg
/tmp/cctyEbxS.o: In function `main':
patchworkrpg.cpp:(.text+0x25): undefined reference to `SDL_Init'
patchworkrpg.cpp:(.text+0x62): undefined reference to `SDL_CreateWindow'
patchworkrpg.cpp:(.text+0x8a): undefined reference to `SDL_GetWindowSurface'
patchworkrpg.cpp:(.text+0x98): undefined reference to `SDL_Delay'
collect2: error: ld returned 1 exit status
<builtin>: recipe for target 'patchworkrpg' failed
make: *** [patchworkrpg] Error 1
在终端输入的命令运行正常:
g++ patchworkrpg.cpp -lSDL2 -o patchworkrpg
我也试过从makefile运行那个确切的命令,它失败了,错误完全相同
(您的示例Makefile和源文件不完整,因此我必须编辑它们以进行测试)
在你的Makefile:
ONAME = patchworkrpg
all: $(ONAME)
$(CC) $(ONAME).cpp $(LFLAGS) -o $(ONAME)
all
依赖于patchworkrpg
,但是没有make patchworkrpg
的规则,所以make创建了您在运行中看到的隐式规则g++ patchworkrpg.cpp -o patchworkrpg
。
不太确定你是如何组织的,但实际运行你自己的命令行,这个改变应该修复它:
all: $(ONAME).cpp
相关文章:
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 无法在 geany 上运行代码。无法执行构建命令
- 如何在使用Makefile构建后在cmd中运行该程序?
- 使用纯 CMake 构建 SFML 时出现运行时错误
- 在 Visual Studio 中构建一个没有 C/C++ 运行时的静态库
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- 什么是运行英特尔线程构建模块的 XCode 8 环境变量
- 有关为指向运行时确定的多个结构之一的指针构建类的建议
- 无法构建 quazip。MOC 编译器不会运行。命令行未找到相关类
- 是否可以在运行时在C++中构建变量名称?
- C\C++构建的dll在LabView中实时运行
- 如何在构建Qt应用程序时运行git命令
- 使用 CodeBlocks + GCC 构建的可执行文件是否可以在任何 Windows 上运行?
- C++运行时构建嵌套函数
- 代码示例 "switch" (b.eckel) 不在 Xcode 上构建/运行,而是在 QT 上构建/运行
- 应用程序停滞在构建/运行过程中
- 如何使用Eclipse Luna在CDT中使用构建/运行配置
- 构建运行良好,但在运行时崩溃
- Boost库构建-运行时链接和链接选项之间的差异
- 构建运行在不同版本linux上的cpp程序