Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MacOS Qt上包含的SDL框架_Qt_Frameworks_Sdl - Fatal编程技术网

MacOS Qt上包含的SDL框架

MacOS Qt上包含的SDL框架,qt,frameworks,sdl,Qt,Frameworks,Sdl,我想用Qt编译一个SDL项目。我下载了SDL framework 1.2.15,下面是我的Qt项目文件: TEMPLATE = app SOURCES += main.cpp OBJECTIVE_HEADERS += SDLMain.h OBJECTIVE_SOURCES += SDLMain.m LIBS += -framework Cocoa LIBS += -F/Library/Frameworks LIBS += -framework SDL 使用Qt 5.0.2编译时,一切正常,但使

我想用Qt编译一个SDL项目。我下载了SDL framework 1.2.15,下面是我的Qt项目文件:

TEMPLATE = app
SOURCES += main.cpp
OBJECTIVE_HEADERS += SDLMain.h
OBJECTIVE_SOURCES += SDLMain.m
LIBS += -framework Cocoa
LIBS += -F/Library/Frameworks
LIBS += -framework SDL
使用Qt 5.0.2编译时,一切正常,但使用Qt 5.1.0编译SDLMain.m时出现以下错误:

error: 'SDL/SDL.h' file not found

为什么Qt 5.1不能以与Qt 5.0.2相同的方式处理框架?

我不知道为什么它以前可以工作,但让我们注意以下几点:

  • 将框架添加到
    LIBS
    只负责链接,而不负责编译

  • 您不需要
    INCLUDEPATH
    ,这不是必需的

  • 您需要为链接器和编译器添加框架路径:

    // The directory where some frameworks are installed. There must
    // exist SDL.framework as a subdirectory of that directory.
    // It's simply to avoid typing the path twice.
    // It's a user variable, not interpreted by qmake
    SDL = -F/Library/Frameworks
    // Let the C/C++ compiler know where to find the frameworks.
    // This is so that when you include <xyz/foo>, it'll be replaced
    // by $$SDL/xyz.framework/Headers/foo
    // $$var is replaced by qmake by the contents of var
    QMAKE_CFLAGS += $$SDL
    QMAKE_CXXFLAGS += $$SDL
    // Since we compile some Objective C code, we need to set
    // the flags there too.
    QMAKE_OBJECTIVE_CFLAGS += $$SDL
    QMAKE_OBJECTIVE_CXXFLAGS += $$SDL
    // Let the linker know where to find the frameworks
    LIBS += $$SDL
    // Tell the linker that we want to use the SDL framework.
    LIBS += -framework SDL
    
    //安装某些框架的目录。一定有
    //将SDL.framework作为该目录的子目录存在。
    //这只是为了避免两次键入路径。
    //它是一个用户变量,不由qmake解释
    SDL=-F/库/框架
    //让C/C++编译器知道在哪里可以找到框架。
    //这样,当您包含时,它将被替换
    //通过$$SDL/xyz.framework/Headers/foo
    //$$var由qmake替换为var的内容
    QMAKE_CFLAGS+=$$SDL
    QMAKE_cxflags+=$$SDL
    //因为我们编译了一些目标C代码,所以我们需要设置
    //那里也有国旗。
    QMAKE_OBJECTIVE_CFLAGS+=$$SDL
    QMAKE_OBJECTIVE_CXXFLAGS+=$$SDL
    //让链接器知道在哪里可以找到框架
    LIBS+=$$SDL
    //告诉链接器我们要使用SDL框架。
    LIBS+=-frameworksdl
    
  • 这在OSX10.6和10.8上都进行了测试。确保您已经安装了xcode,并且它是适用于给定OSX的最新版本

    #include <SDL/SDL.h>
    
    #包括
    
    在你的源头