我正在尝试将SDL2设置为与g++,文本编辑器和终端一起使用。
我在/Library/Frameworks中有我的SDL2.framework。
我的桌面上有一个名为testsdl的文件夹,其中包含两个文件:

1)main.cpp

2)makefile

当我键入make时,出现以下错误:main.cpp:2:10:致命错误:找不到'SDL2/SDL.h'文件。
这是我的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的人,我该怎么做?
谢谢。

最佳答案

您的路线正确,但-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

关于c++ - 通过命令行设置SDL2 mac,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33772430/

10-12 23:07