2016-04-19 4 views
0

Я знаю, что есть некоторые ответы (например here, here или here), но я не могу заставить его работать:SDL2 и CMake на OS X 10,11

Рассмотрим MWE main.cpp

// depending on the source of the example, 
// one of the two includes is used 
//#include <SDL2/SDL.h> 
#include "SDL.h" 

int main() { 
    //Start SDL 
    SDL_Init(SDL_INIT_EVERYTHING); 
    //Quit SDL 
    SDL_Quit(); 
    return 0; 
} 

I downloaded SDL2 v2.0.4 на OS X 10.11 и скопировал SDL2.framework файл в /Library/Frameworks папку.

Теперь я пытаюсь найти рабочий сценарий CMake для компиляции main.cpp.

Сначала я попытался

find_package(SDL) 
add_executable(example main.cpp) 
target_include_directories(example ${SDL_INCLUDE_DIR}) 
target_link_libraries(example ${SDL_LIBRARY}) 

Но я получаю сообщение об ошибке

Could NOT find SDL (missing: SDL_LIBRARY) (found version "2.0.4") 
CMake Error at CMakeLists.txt:3 (target_include_directories): 
    target_include_directories called with invalid arguments 

Если я включил FindSDL2.cmake в подкаталоге CMake и использовать скрипт

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake") 
find_package(SDL2 REQUIRED) 
include_directories(${SDL2_INCLUDE_DIR}) 
add_executable(example main.cpp) 

CMake работы , но я получаю ошибку компоновщика:

Undefined symbols for architecture x86_64: 
    "_SDL_Init", referenced from: 
     _main in main.cpp.o 
    "_SDL_Quit", referenced from: 
     _main in main.cpp.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

У вас есть идеи, что мои проблемы и как я могу правильно использовать SDL2 таким образом?

ответ

1

Вам необходимо добавить target_link_libraries(YOUR_TARGET ${SDL2_LIBRARY}) для своей цели - это не ссылка на sdl.

Если вы запустите make VERBOSE=1, вы можете увидеть фактическую ссылку.

+0

фиксированный. запятые, цитаты, точки с запятой ... мой cmake ужасен – xaxxon

+0

работает для меня, спасибо! – muffel

Смежные вопросы