libSDL、CMake 和 Mac OS X Lion

2024-05-11

我正在尝试在我的Mac上编译cmake项目,但它取决于SDL框架。我安装了这个框架,在 cmake 之后向我报告找不到 libSDL 我自己设置了以下导出变量(按照 cmake 的建议):

export SDL_INCLUDE_DIR=/Library/Frameworks/SDL.framework/
export SDLIMAGE_LIBRARY=/Library/Frameworks/SDL_image.framework/
export SDLIMAGE_INCLUDE_DIR=/Library/Frameworks/SDL_image.framework/Headers

现在 cmake 完成了它的工作,但是当我运行 make 时,我收到以下消息:

Mats-MBP:build mats$ make
Linking CXX executable SDLExample
Undefined symbols for architecture i386:
 "_main", referenced from:
     start in crt1.10.6.o
    (maybe you meant: _SDL_main)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make[2]: *** [src/SDLExample] Error 1
make[1]: *** [src/CMakeFiles/SDLExample.dir/all] Error 2
make: *** [all] Error 2

我在 i386 和 x86_64 上都得到了这个。我忘记了什么?

EDIT:这些是文件内容:

Mats-MBP:build mats$ cat ../src/main.cpp 
/**
 * @file main.cpp
 *
 * A simple example-program to help you out with using SDL for 2D graphics.
 *
 * @author przemek
 */

#include <iostream>
#include <stdexcept>
#include <SDL.h>
#include <SDL_image.h>

using namespace std;

int main(int argc, char* argv[]) {
    try {
        // Try to initialize SDL (for video)
        if (SDL_Init(SDL_INIT_VIDEO) != 0) {
            throw runtime_error("Couldn't init SDL video!");
        }
        // Create a double-buffered screen surface:
        SDL_Surface* screen = SDL_SetVideoMode(800, 600, 24, SDL_DOUBLEBUF/* |     SDL_FULLSCREEN*/);
        if (!screen) {
            throw runtime_error("Couldn't set SDL video mode!");
        }

        // Use SDL_image library to load an image:
        SDL_Surface* image = IMG_Load("image.png");
//      SDL_Surface* image = IMG_Load("image.tga");
        if (!image) {
            throw runtime_error(SDL_GetError());
        }

        // "Pump" SDL events like keyboard presses and get the keystate:
        SDL_PumpEvents();
        Uint8* keyState = SDL_GetKeyState(0);

        // loop until user presses escape:
        while (!keyState[SDLK_ESCAPE]) {
            // Display a game background:
        SDL_Rect src, dst;          // Source and destination rectangles
        src.x = 0;
        src.y = 0;
        src.w = image->w;
        src.h = image->h;
        dst.x = 100;
        dst.y = 50;
        dst.w = image->w;
        dst.h = image->h;
        // Copy the image from 'image' to 'screen' surface
        SDL_BlitSurface(image, &src, SDL_GetVideoSurface(), &dst);

        // Flip surfaces (remember: double-buffering!) and clear the back buffer:
        SDL_Flip(screen);
        SDL_FillRect(screen, 0, 0);

        // Get new keyboard state:
        SDL_PumpEvents();
        keyState = SDL_GetKeyState(0);
    }

    // Free the screen surface & quit SDL
    SDL_FreeSurface(screen);
    SDL_Quit();
} catch (runtime_error& e) {
    cout << e.what() << endl;
    SDL_Quit();
}

return 0;
}

我通过删除 .framework 并取消设置该框架的导出变量来解决这个问题,然后我使用源代码进行 ./configure、make、make install。我删除了所有 cmake 构建文件和 cmade 并再次制作了我的项目,一切都解决了。

(要在 OS X Lion 上编译 SDL,您需要./configure --disable-assembly)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libSDL、CMake 和 Mac OS X Lion 的相关文章

随机推荐

  • speex 烦人的蜱虫[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在制作
  • DynamoDB 中条件写入的日期时间比较

    我目前正在使用 DynamoDB 如果该记录的日期早于新记录日期字段 我想使用条件写入来更新该记录 有没有办法比较条件写入的 DateTime 类型 或者目前仅适用于整数 字符串和流 Thanks 既然你提到你正在使用ISO 8601 ht
  • 从节点使用 TypeScript 编译器

    使用咖啡脚本可以很容易地做到这一点 var coffee require coffee script coffee compile a 1 gt function n var a n n a 1 n n call this n 有没有办法用
  • 检索旋转的 UIImageView 的所有 4 个坐标

    如何获取 UIImageView 的 4 个坐标 我知道可以得到CGRect以及origin x和origin y 但是如何找到所有4个角呢 编辑 我正在旋转 UIImageViews 这就是我问的原因 P 您可以添加矩形的宽度和高度来获取
  • 红宝石和纱线

    I have an error with my RoR project when I try to start it using Run shift f10 但是当我使用启动服务器时rails s在控制台中 它有效 Your Yarn pa
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • Spring Data (JPA) 多个存储库,没有很多类

    在我当前的项目中 我使用 Spring Data JPA 并且有 20 多个 Entity类 我想为它们创建存储库 但创建另一个类 每个类适用于任何模型 Repository注释似乎是某种矫枉过正和大量 重复 代码 所有存储库类将如下所示
  • 使用动画来滑动视图

    我有一个可以识别滑动手势 向上和向下 的 FrameLayout 例如 如果执行向上滑动 我应该对当前视图 即 MATCH PARENT x MATCH PARENT 进行动画处理 使其向上移动 同时新视图来自底部 我可以用动画来实现这一点
  • UIView transitionFromView:如何在转换过程中实现黑色背景?

    我使用下一个代码 UIView transitionFromView viewA toView viewB duration 1 0 options UIViewAnimationOptionTransitionFlipFromLeft c
  • 在 Locust 中通过顺序任务将数据从一个任务函数逐一传递到另一个任务函数时出现问题

    我们正在尝试实现一种基于用户场景的负载测试 它基本上在一个 url 中创建一个订单 然后我们必须在下一个 url 中传递订单 id 来获取该订单的状态 我们正在使用 Locust 顺序任务 因为我们希望它按第一个请求 gt 第二个请求 gt
  • 强制绑定更新 Silverlight

    如何强制更新我的对象 DataContext 绑定 我正在网格上使用事件 并且在事件触发之前不会处理绑定更新 有什么廉价的技巧可以解决这个问题吗 最后 我总是可以用旧的手动方式从文本框中获取值并更新我的对象 但最好让绑定为我做这件事 UPD
  • 如何显示AVPictureInPictureController?

    我正在尝试使用播放视频AV画中画控制器最近在IOS9 使用此代码 AVPlayer AVPlayer AVPlayer playerWithURL url AVPlayerLayer layer AVPlayerLayer playerLa
  • 从另一个文件覆盖函数中的变量

    一 总结 我不知道如何从另一个文件覆盖函数中的变量 2 示例 2 1 配置 I use logbook http logbook pocoo org and pyfancy https github com ilovecode1 Pyfan
  • Apache mod_speling 不区分大小写的 URL 问题

    我想要使 用 Apache 的不区分大小写的 URLmod speling模块 但这会产生不需要的 多个选项 列表 而 Apache 文档说 设置后 该指令将拼写更正的操作限制为小写 大写更改 不执行其他可能的更正 我正在全新安装的 Apa
  • 签名根框架中嵌入的子框架不起作用(Xcode 11.2.1)

    我有一个小型的概念验证应用程序 我试图在我的框架 AequumPOCFramework framework 中嵌入 并签名 一个框架 Alamofire 但是 当我尝试部署到我的设备时 它不断给出我的错误 在使用库验证的进程中使用无效 映射
  • 如何在鼠标悬停时突出显示 MahApps.Metro 的图块?

    我刚刚发现了一个非常出色的 WPF UI 工具包 MahApps Metro 我创建了一个带有 MahApps Metro Controls Tile 类型的图块的窗口 当鼠标经过时 我无法找到突出显示图块的正确方法 你知道我该怎么做吗 我
  • 如何在gradle中复制文件?

    我正在尝试将战争档案部署到 Tomcat 中 这是我编写的构建脚本 apply plugin war task deploy dependsOn war copy from build libs into E apache tomcat 8
  • 使用正则表达式检查整个字符串

    我正在尝试检查字符串是否是数字 因此正则表达式 d 似乎不错 然而 由于某种原因 该正则表达式也适合 78 46 92 168 8000 这是我不想要的 一些代码 class Foo rex re compile d def bar sel
  • 我可以说服 GCC 通过存储的函数指针内联延迟调用吗?

    当然 当内部函数调用在该范围内直接已知时 C 编译器可以内联从函数模板内进行的函数调用 ref https stackoverflow com q 4860762 560648 include
  • libSDL、CMake 和 Mac OS X Lion

    我正在尝试在我的Mac上编译cmake项目 但它取决于SDL框架 我安装了这个框架 在 cmake 之后向我报告找不到 libSDL 我自己设置了以下导出变量 按照 cmake 的建议 export SDL INCLUDE DIR Libr