我似乎无法让 SDL 使用 sublime text
I cannot seem to get SDL to work with sublime text
我正在制作一个简单的游戏并且想使用 SDL 来制作图形。我 运行 linux Ubuntu,使用 sublime 文本编辑器、g++ 编译器,我正在用 c++ 编码。我下载了 SDL 并关注了 these steps。
按照这些步骤操作后,所有 SDL 错误都不再出现。但是,标志变量不起作用。
这是代码:
#include <SDL2/SDL.h>
Risk() {
SDL_Init(SDL_INIT_HAPTIC);
window = SDL_CreateWindow("Board",SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 500,500, SDL_WINDOW_RESIZABLE);
SDL_GetError();
}
我的编译器出现的错误是:
tom@TBT-XPS-13-9360:~/Documents/Subjects/CS/Fun/Risk$ g++ -std=c++14
Game.cpp -W/tmp/ccLwSxiL.o: In function `Risk::Risk()':
Game.cpp:(.text._ZN4RiskC2Ev[_ZN4RiskC5Ev]+0x1f): undefined reference
to `SDL_Init'
Game.cpp:(.text._ZN4RiskC2Ev[_ZN4RiskC5Ev]+0x44): undefined reference
to `SDL_CreateWindow'
Game.cpp:(.text._ZN4RiskC2Ev[_ZN4RiskC5Ev]+0x54): undefined reference
to `SDL_GetError'
collect2: error: ld returned 1 exit status
我认为错误是 SDL 库在错误的位置,或者 Sublime 不知道它们在哪里。
问题是 Sublime 没有添加指示可执行文件应链接到 SDL2 库的必需指令。
你可以在命令行中用参数-lSDL2来指明,或者用sdl2-config --libs
的sdl2-config程序,像这样:
$ g++ -o executable-name source.cpp -lSDL2
或
$ g++ -o executable-name source.cpp $(sdl2-config --libs)
sdl2-config 只是一个为编译和链接输出适当配置选项的实用程序。单凭运行就可以看到:
$ sdl2-config --libs
它应该输出如下内容:
-L/usr/lib -lSDL2
你可以看到前面提到的相同的-lSDL2,还有一个-L/usr/lib指示链接器在[中包含库的指令=59=]/ 目录在其搜索路径中。
通常,您应该使用 sdl2-config 获取所需的配置选项以传递给编译器,而不是自己指示它们,当然,除非您知道自己在做什么。
您可以使用 Sublime Text 中的 Make 构建系统,而不是去命令行编译。将名为 Makefile 的文件添加到您的项目目录,内容如下:
# OBJS place here every file to compile as part of the project
OBJS = Game.cpp
# CC compiler to use
CC = g++
# COMPILER_FLAGS compilation options
COMPILER_FLAGS = -std=c++14 -Wall `sdl2-config --cflags`
# LINKER_FLAGS libraries to link
LINKER_FLAGS = `sdl2-config --libs`
# OBJ_NAME executable
OBJ_NAME = mygame
all : $(OBJS)
$(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME)
然后转到菜单工具 -> 构建系统和select 制作.现在尝试构建您的项目,如果成功,应该会创建一个 mygame 可执行文件。
我正在制作一个简单的游戏并且想使用 SDL 来制作图形。我 运行 linux Ubuntu,使用 sublime 文本编辑器、g++ 编译器,我正在用 c++ 编码。我下载了 SDL 并关注了 these steps。
按照这些步骤操作后,所有 SDL 错误都不再出现。但是,标志变量不起作用。
这是代码:
#include <SDL2/SDL.h>
Risk() {
SDL_Init(SDL_INIT_HAPTIC);
window = SDL_CreateWindow("Board",SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 500,500, SDL_WINDOW_RESIZABLE);
SDL_GetError();
}
我的编译器出现的错误是:
tom@TBT-XPS-13-9360:~/Documents/Subjects/CS/Fun/Risk$ g++ -std=c++14
Game.cpp -W/tmp/ccLwSxiL.o: In function `Risk::Risk()':
Game.cpp:(.text._ZN4RiskC2Ev[_ZN4RiskC5Ev]+0x1f): undefined reference
to `SDL_Init'
Game.cpp:(.text._ZN4RiskC2Ev[_ZN4RiskC5Ev]+0x44): undefined reference
to `SDL_CreateWindow'
Game.cpp:(.text._ZN4RiskC2Ev[_ZN4RiskC5Ev]+0x54): undefined reference
to `SDL_GetError'
collect2: error: ld returned 1 exit status
我认为错误是 SDL 库在错误的位置,或者 Sublime 不知道它们在哪里。
问题是 Sublime 没有添加指示可执行文件应链接到 SDL2 库的必需指令。
你可以在命令行中用参数-lSDL2来指明,或者用sdl2-config --libs
的sdl2-config程序,像这样:
$ g++ -o executable-name source.cpp -lSDL2
或
$ g++ -o executable-name source.cpp $(sdl2-config --libs)
sdl2-config 只是一个为编译和链接输出适当配置选项的实用程序。单凭运行就可以看到:
$ sdl2-config --libs
它应该输出如下内容:
-L/usr/lib -lSDL2
你可以看到前面提到的相同的-lSDL2,还有一个-L/usr/lib指示链接器在[中包含库的指令=59=]/ 目录在其搜索路径中。 通常,您应该使用 sdl2-config 获取所需的配置选项以传递给编译器,而不是自己指示它们,当然,除非您知道自己在做什么。
您可以使用 Sublime Text 中的 Make 构建系统,而不是去命令行编译。将名为 Makefile 的文件添加到您的项目目录,内容如下:
# OBJS place here every file to compile as part of the project
OBJS = Game.cpp
# CC compiler to use
CC = g++
# COMPILER_FLAGS compilation options
COMPILER_FLAGS = -std=c++14 -Wall `sdl2-config --cflags`
# LINKER_FLAGS libraries to link
LINKER_FLAGS = `sdl2-config --libs`
# OBJ_NAME executable
OBJ_NAME = mygame
all : $(OBJS)
$(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME)
然后转到菜单工具 -> 构建系统和select 制作.现在尝试构建您的项目,如果成功,应该会创建一个 mygame 可执行文件。