2017-02-20 31 views
0

Я строю тестовый проект с использованием SDL2 и CLion в Windows 10. Проект под названием HelloSDL основан на this tutorial и просто создает окно и печатает «Hello World». Я использую сценарии FindSDL2.cmake и FindSDL2_ttf.cmake от here. Мой файл CMakeLists.txt выглядит следующим образом:Проект SDL2 строится на MinGW, но не Cygwin с использованием 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}) 

Проект строит и работает прекрасно под MinGW, однако, когда я пытаюсь построить его под Cygwin я получаю связывающие ошибки:

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' 

Я не» У меня большой опыт, но для меня это означает, что он не связан с библиотекой SDL2. Я запутался, почему, когда выход CMake показывает, что он нашел библиотеку 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 

Любая помощь будет оценена в попытке получить его скомпилировать под Cygwin.

+0

Он основывает MinGW библиотеку, а не Cygwin один. Установили ли вы пакеты \t 'libSDL2-devel' и' libSDL2_ttf-devel'? – matzeri

ответ

0

Сначала вам нужно использовать библиотеки из Cygwin (libSDL2 * -devel), а не тот, который вы загрузили для MinGW, и вам также нужно сгенерировать Makefile с помощью CMake в формате MSYS.

CMake -G "MSYS Makefiles"