通过命令行设置 SDL2 mac
setup SDL2 mac through command line
我正在尝试设置 SDL2 以与 g++、文本编辑器和终端一起使用。
我在 /Library/Frameworks 中有我的 SDL2.framework。
我的桌面上有一个名为 testsdl 的文件夹,其中包含两个文件:
1) main.cpp
2) 生成文件
当我键入 make 时,我得到以下 error:main.cpp:2:10: fatal error: 'SDL2/SDL.h' file not found。
这是我的 makefile
的副本
CXX = g++
SDL = -framework SDL2
CXXFLAGS = -Wall -c -std=c++11 -I ~/Library/Frameworks/SDL2.framework/Headers
LDFLAGS = $(SDL) -F /Library/Frameworks -F ~/Library/Frameworks/
EXE = SDL_Lesson0
all: $(EXE)
$(EXE): main.o
$(CXX) $(LDFLAGS) $< -o $@
main.o: main.cpp
$(CXX) $(CXXFLAGS) $< -o $@
clean:
rm *.o && rm $(EXE)
这里是 main.cpp 的副本:
#include <iostream>
#include <SDL2/SDL.h>
int main(int, char**)
{
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
SDL_Quit();
return 0;
}
我尝试将 #include 更改为 "SDL2/SDL.h" 或仅更改或任何其他可能的组合。我通过 Xcode 设置它没有问题,但无法弄清楚如何在不使用 IDE.
的情况下进行设置
问题的第二部分是:
如果我想将框架包含在项目文件夹中,以便以后可以将二进制文件分发给机器上没有 SDL 的人,我该怎么做?
谢谢。
如果你进入
/Users/path/where/i/unzipped/SDL2-2.0.5
和运行
sdl2-config --cflags --libs
它打印出 header 包含路径和库路径 SDL
完整的通用构建可能类似于:
g++ -std=c++11 main.cpp -o main.exe `sdl2-config --cflags` `sdl2-config --libs`
如果您愿意,可以将其翻译成您的 make 文件
你走在正确的轨道上,但 -F /Library/Frameworks
也需要在 CXXFLAGS 中。结果命令应该类似于:
g++ -Wall -F /Library/Frameworks -c -o main.o main.cpp
g++ main.o -o main -framework SDL2 -I /Library/Frameworks/SDL2.framework/Headers
这是一个简化的 makefile,适用于 OSX 10.12.6:
CXX = g++
CXXFLAGS = -Wall -F /Library/Frameworks
LDFLAGS = -framework SDL2 -F /Library/Frameworks -I /Library/Frameworks/SDL2.framework/Headers
all: main
main: main.o
$(CXX) main.o -o main $(LDFLAGS)
obj/main.o : main.cpp
$(CXX) $(CXXFLAGS) -c main.cpp -o main.o
clean:
rm main.o main
我正在尝试设置 SDL2 以与 g++、文本编辑器和终端一起使用。 我在 /Library/Frameworks 中有我的 SDL2.framework。 我的桌面上有一个名为 testsdl 的文件夹,其中包含两个文件:
1) main.cpp
2) 生成文件
当我键入 make 时,我得到以下 error:main.cpp:2:10: fatal error: 'SDL2/SDL.h' file not found。 这是我的 makefile
的副本CXX = g++
SDL = -framework SDL2
CXXFLAGS = -Wall -c -std=c++11 -I ~/Library/Frameworks/SDL2.framework/Headers
LDFLAGS = $(SDL) -F /Library/Frameworks -F ~/Library/Frameworks/
EXE = SDL_Lesson0
all: $(EXE)
$(EXE): main.o
$(CXX) $(LDFLAGS) $< -o $@
main.o: main.cpp
$(CXX) $(CXXFLAGS) $< -o $@
clean:
rm *.o && rm $(EXE)
这里是 main.cpp 的副本:
#include <iostream>
#include <SDL2/SDL.h>
int main(int, char**)
{
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
SDL_Quit();
return 0;
}
我尝试将 #include 更改为 "SDL2/SDL.h" 或仅更改或任何其他可能的组合。我通过 Xcode 设置它没有问题,但无法弄清楚如何在不使用 IDE.
的情况下进行设置问题的第二部分是: 如果我想将框架包含在项目文件夹中,以便以后可以将二进制文件分发给机器上没有 SDL 的人,我该怎么做? 谢谢。
如果你进入
/Users/path/where/i/unzipped/SDL2-2.0.5
和运行
sdl2-config --cflags --libs
它打印出 header 包含路径和库路径 SDL
完整的通用构建可能类似于:
g++ -std=c++11 main.cpp -o main.exe `sdl2-config --cflags` `sdl2-config --libs`
如果您愿意,可以将其翻译成您的 make 文件
你走在正确的轨道上,但 -F /Library/Frameworks
也需要在 CXXFLAGS 中。结果命令应该类似于:
g++ -Wall -F /Library/Frameworks -c -o main.o main.cpp
g++ main.o -o main -framework SDL2 -I /Library/Frameworks/SDL2.framework/Headers
这是一个简化的 makefile,适用于 OSX 10.12.6:
CXX = g++
CXXFLAGS = -Wall -F /Library/Frameworks
LDFLAGS = -framework SDL2 -F /Library/Frameworks -I /Library/Frameworks/SDL2.framework/Headers
all: main
main: main.o
$(CXX) main.o -o main $(LDFLAGS)
obj/main.o : main.cpp
$(CXX) $(CXXFLAGS) -c main.cpp -o main.o
clean:
rm main.o main