2017-02-20 1 views
0

Je construis un projet de test utilisant SDL2 et CLion sur Windows 10. Le projet, appelé HelloSDL, est basé sur this tutorial, et crée simplement une fenêtre et imprime "Hello World". J'utilise les scripts FindSDL2.cmake et FindSDL2_ttf.cmake de here. Mon fichier CMakeLists.txt est la suivante:Le projet SDL2 s'appuie sur MinGW mais pas Cygwin en utilisant CLion

cmake_minimum_required(VERSION 3.6) 
project(HelloSDL) 

set(CMAKE_CXX_STANDARD 11) 

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${HelloSDL_SOURCE_DIR}/cmake") 

set(SDL2_PATH "C:\\SDL\\SDL2-2.0.5\\i686-w64-mingw32" CACHE PATH "The location to search for SDL2") 
set(SDL2_TTF_PATH "C:\\SDL\\SDL2_ttf-2.0.14\\i686-w64-mingw32" CACHE PATH "The location to search for SDL2_TTF") 

find_package(SDL2 REQUIRED) 
include_directories(${SDL2_INCLUDE_DIR}) 

find_package(SDL2_ttf REQUIRED) 
include_directories(${SDL2_TTF_INCLUDE_DIR}) 

include_directories(include) 

set(SOURCE_FILES main.cpp) 
add_executable(HelloSDL ${SOURCE_FILES}) 
target_link_libraries(HelloSDL ${SDL2_LIBRARY} ${SDL2_TTF_LIBRARY}) 

Le projet construit et fonctionne parfaitement bien sous MinGW, mais quand je tente de construire sous Cygwin Je reçois des erreurs reliant:

CMakeFiles/HelloSDL.dir/main.cpp.o: In function `SDL_main': 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:97: undefined reference to `SDL_Init' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:102: undefined reference to `TTF_Init' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:104: undefined reference to `SDL_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:109: undefined reference to `SDL_CreateWindow' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:113: undefined reference to `TTF_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:114: undefined reference to `SDL_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:117: undefined reference to `SDL_CreateRenderer' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:121: undefined reference to `TTF_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:122: undefined reference to `SDL_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:133: undefined reference to `TTF_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:134: undefined reference to `SDL_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:140: undefined reference to `SDL_QueryTexture' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:148: undefined reference to `SDL_PollEvent' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:156: undefined reference to `SDL_RenderClear' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:160: undefined reference to `SDL_RenderPresent' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:164: undefined reference to `TTF_Quit' 
/cygdrive/c/Users/Kieran/CLionProjects/HelloSDL/main.cpp:165: undefined reference to `SDL_Quit' 

Je ne J'ai beaucoup d'expérience, mais pour moi cela indique que ce n'est pas lié à la librairie SDL2. Je suis confus quant à pourquoi, lorsque la sortie CMake indique trouvé la bibliothèque SDL2:

-- Found SDL2: C:/SDL/SDL2-2.0.5/i686-w64-mingw32/lib/libSDL2main.a;C:/SDL/SDL2-2.0.5/i686-w64-mingw32/lib/libSDL2.dll.a 

Toute aide serait appréciée en essayant de le compiler sous Cygwin.

+0

Il fonde une bibliothèque MinGW, pas celui Cygwin. Avez-vous installé les paquets \t 'libSDL2-devel' et' libSDL2_ttf-devel'? – matzeri

Répondre

0

Vous devez d'abord utiliser les bibliothèques de Cygwin (libSDL2 * -devel), pas celle que vous avez téléchargée pour MinGW, et vous devez également générer votre Makefile avec CMake en utilisant le format MSYS.

CMake -G "MSYS Makefiles"