2013-04-23 126 views
0

我想编译我的mac上的cmake项目,但它取决于SDL。 我有alreaday阅读“LibSDL,CMake和MacOSX狮子”,但我无法解决这个问题。libSDL,CMake和Mac OS X狮子2

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的。 如何解决?

+0

我可以编译“g ++ main.cpp -g'sdl-config --cflags'sdl-config --libs'”,但是,我不能编译CMake – user2310210 2013-04-23 07:51:07

回答

1

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