libSDL,CMake和Mac OS X lion 2

时间:2013-04-23 07:41:47

标签: macos cmake sdl

我正在尝试在我的mac上编译一个cmake项目,但这取决于SDL。 我已经读过“LibSDL,CMake和MacOSX Lion”,但是我无法解决这个问题。

CMakeList.txt

cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR)
# Give a name to the project.
project(movehead)
# This include enable you to use our CMake framework
find_package(qibuild)
find_package(SDL REQUIRED)
link_directories( /usr/local/lib )
link_libraries (
     ${SDL_LIBRARY}
     SDLmain
)
# Create an executable named movehead,
# with the source file : movehead.cpp
qi_create_bin(movehead movehead.cpp)

# Tell CMake that movehead depends on ALCOMMON.
# This will set the libraries to link movehead with,
# the include paths, and so on
qi_use_lib(movehead ALCOMMON)

命令行

 sudo qibuild make -c naoqi-sdk movehead Active configuration: naoqi-sdk (Debug)
    Building movehead in naoqi-sdk (Debug)
    Scanning dependencies of target movehead
    Linking CXX executable sdk/bin/movehead
    ld: warning: ignoring file /usr/local/lib/libSDLmain.a, file was built for archive which is not the architecture being linked (i386)
    ld: warning: ignoring file /usr/local/lib/libSDL.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
    Undefined symbols for architecture i386:
      "_main", referenced from:
          start in crt1.10.6.o
         (maybe you meant: _SDL_main)
      "_SDL_Init", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_NumJoysticks", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_JoystickEventState", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_JoystickOpen", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_JoystickName", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_JoystickNumAxes", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_PollEvent", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_JoystickGetButton", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_JoystickGetAxis", referenced from:
          _SDL_main in movehead.cpp.o
      "_SDL_QuitSubSystem", referenced from:
          _SDL_main in movehead.cpp.o
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[2]: *** [sdk/bin/movehead] Error 1
    make[1]: *** [CMakeFiles/movehead.dir/all] Error 2
    make: *** [all] Error 2
    [ERROR]     
                Error occured when building project movehead
    dhcp47-122:movehead yukke150$ sudo qibuild configure -c naoqi-sdk movehead --disable-assembly
    usage: qibuild [-h]


lipo -info /usr/local/lib/libSDL.dylib
Non-fat file: /usr/local/lib/libSDL.dylib is architecture: x86_64
lipo -info /usr/local/lib/libSDLmain.a
input file /usr/local/lib/libSDLmain.a is not a fat file
Non-fat file: /usr/local/lib/libSDLmain.a is architecture: x86_64

我认为这些文件是x86_64。 怎么解决?

1 个答案:

答案 0 :(得分:1)

使用SDL的框架分发(在SDL网站上提供)工作,我可以在x86或x86_64中编译。 以前我从brew安装它,所以如果相同(或Mac端口等),不要忘记先卸载它们。