Добавление SDL2 в Clion - PullRequest
       33

Добавление SDL2 в Clion

0 голосов
/ 12 октября 2018

Я новичок, я пытался заставить SDL2 работать в clion, но мне не удалось.Я искал на YouTube и Google, но ничего не работает.У меня SDL2.dll в той же папке, что и main.cpp Мой файл cmake выглядит так:

cmake_minimum_required(VERSION 3.8)
project(sdlTest)

set(CMAKE_CXX_STANDARD 17)

set(SOURCE_FILES main.cpp)

add_executable(sdlTest ${SOURCE_FILES})

add_library(SDL2.dll SHARED main.cpp)

set_target_properties(SDL2.dll PROPERTIES LINKER_LANGUAGE CXX)

Я не знаю, что я делаю неправильно.

Я попытался запуститьэтот пример кода из sdl:

#include "SDL2/SDL.h"
#include <stdio.h>

int main(int argc, char* argv[]) {

SDL_Window *window;                    // Declare a pointer

SDL_Init(SDL_INIT_VIDEO);              // Initialize SDL2

// Create an application window with the following settings:
window = SDL_CreateWindow(
        "An SDL2 window",                  // window title
        SDL_WINDOWPOS_UNDEFINED,           // initial x position
        SDL_WINDOWPOS_UNDEFINED,           // initial y position
        640,                               // width, in pixels
        480,                               // height, in pixels
        SDL_WINDOW_OPENGL                  // flags - see below
);

// Check that the window was successfully created
if (window == NULL) {
    // In the case that the window could not be made...
    printf("Could not create window: %s\n", SDL_GetError());
    return 1;
}

// The window is open: could enter program loop here (see SDL_PollEvent())

SDL_Delay(3000);  // Pause execution for 3000 milliseconds, for example

// Close and destroy the window
SDL_DestroyWindow(window);

// Clean up
SDL_Quit();
return 0;
}

, и я получаю эту ошибку:

CMakeFiles\sdlTest.dir/objects.a(main.cpp.obj): In function `SDL_main':
C:/Users/Dddsasul/CLionProjects/sdlTest/main.cpp:8: undefined reference to 
`SDL_Init'
C:/Users/Dddsasul/CLionProjects/sdlTest/main.cpp:18: undefined reference to 
`SDL_CreateWindow'
C:/Users/Dddsasul/CLionProjects/sdlTest/main.cpp:23: undefined reference to 
`SDL_GetError'
C:/Users/Dddsasul/CLionProjects/sdlTest/main.cpp:29: undefined reference to 
`SDL_Delay'
C:/Users/Dddsasul/CLionProjects/sdlTest/main.cpp:32: undefined reference to 
`SDL_DestroyWindow'
C:/Users/Dddsasul/CLionProjects/sdlTest/main.cpp:35: undefined reference to 
`SDL_Quit'
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../libmingw32.a(main.o): 
(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [sdlTest.exe] Error 1
CMakeFiles\sdlTest.dir\build.make:95: recipe for target 'sdlTest.exe' failed
CMakeFiles\Makefile2:103: recipe for target 'CMakeFiles/sdlTest.dir/all' 
failed
CMakeFiles\Makefile2:115: recipe for target 'CMakeFiles/sdlTest.dir/rule' 
failed
mingw32-make.exe[2]: *** [CMakeFiles/sdlTest.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/sdlTest.dir/rule] Error 2
mingw32-make.exe: *** [sdlTest] Error 2
Makefile:130: recipe for target 'sdlTest' failed

Я пробовал и x64 и x86, и это тот же результат, но в то же время clion нене пишите код красным, он думает, что все в порядке:

enter image description here

Есть идеи, что я делаю неправильно и как это исправить?СПАСИБО!

РЕДАКТИРОВАТЬ:

Cmake выглядит так

cmake_minimum_required(VERSION 3.8)
project(sdlTest)

set(CMAKE_CXX_STANDARD 17)

set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

find_package(SDL2 REQUIRED)

set(SOURCE_FILES main.cpp)

add_executable(sdlTest ${SOURCE_FILES})

set(SDL2_LIBRARY SDL2.dll)

target_link_libraries(sdlTest ${SDL2_LIBRARYS})

Я получаю эту ошибку:

Found package configuration file:

C:/MinGW/lib/cmake/SDL2/sdl2-config.cmake

but it set SDL2_FOUND to FALSE so package "SDL2" is considered to be NOT
FOUND.

ВТОРОЕ РЕДАКТИРОВАНИЕ:

sdl2-config.cmake:

# sdl2 cmake project-config input for ./configure scripts

set(prefix "/usr/local/x86_64-w64-mingw32") 
set(exec_prefix "${prefix}")
set(libdir "${exec_prefix}/lib")
set(SDL2_PREFIX "/usr/local/x86_64-w64-mingw32")
set(SDL2_EXEC_PREFIX "/usr/local/x86_64-w64-mingw32")
set(SDL2_LIBDIR "${exec_prefix}/lib")
set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
set(SDL2_LIBRARIES "-L${SDL2_LIBDIR}  -lmingw32 -lSDL2main -lSDL2  -mwindows")
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
...