【发布时间】:2016-02-19 17:43:21
【问题描述】:
我正在尝试将 SDL2 设置为与 g++、文本编辑器和终端一起使用。 我在 /Library/Frameworks 中有我的 SDL2.framework。 我的桌面上有一个名为 testsdl 的文件夹,其中包含两个文件:
1) main.cpp
2) 生成文件
当我键入 make 时,我收到以下错误: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 的人,我该怎么做? 谢谢。
【问题讨论】:
-
不确定答案,但这些事情对我来说看起来很可疑:(1)为什么
-I和路径~/Library/Frameworks/SDL2.framework/Headers之间有空格?通常-I、-L、-l或任何其他编译器标志及其参数之间没有空格。 (2)~/Library/Frameworks/SDL2.framework/Headers/SDL2/SDL.h真的存在吗?如果没有,那是你的问题。 (3) 如果您希望编译是跨平台的(即在 linux/bsd/windows 上工作),那么我想您也应该远离-framework并改用-L -l -
谢谢,我尝试删除空格,但没有帮助。框架和标题都在那里