2017-02-23 133 views
2

我只是想學習如何在Clion(Jetbrains IDE)中使用SDL,我在帖子中找到了一個答案來編輯我的CMakeLists.txt,我做到了!但它沒有奏效。如何配置Clion以使用SDL2?

我可以使用這些庫,但我無法編譯它,在圖像中可以看到輸出控制檯中的錯誤。

有人可以幫我配置它,請

這是我的 「的CMakeLists.txt」

cmake_minimum_required(VERSION 3.6) 
project(OpenGLTest) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32") 
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") 

include_directories(${PROJECT_SOURCE_DIR}/include) 
link_directories(${PROJECT_SOURCE_DIR}/lib) 

set(SOURCE_FILES main.cpp) 
add_executable(OpenGLTest ${SOURCE_FILES}) 

target_link_libraries(OpenGLTest libSDL2main libSDL2 libSDL2_test) 

這是我的 「的main.cpp」

#include <iostream> 
#include <SDL.h> 

int main() { 
    SDL_Init(SDL_INIT_EVERYTHING); 
    std::cout << "Hello, World!" << std::endl; 
    return 0; 
} 

PS:這是我編寫的代碼只是爲了測試編譯。

這是在克利翁控制檯錯誤

enter image description here

Error

+0

你得到了什麼樣的錯誤信息? –

+0

https://i.stack.imgur.com/Szil0.png這是輸出控制檯 – SupineDread89

+0

,在這裏你可以看到我的文件和庫https://i.stack.imgur.com/IiE8X.png – SupineDread89

回答

4

「的CMakeLists.txt」的正確的文本是:

cmake_minimum_required(VERSION 3.6) 
project(OpenGLTest) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32") 
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") 

include_directories(${PROJECT_SOURCE_DIR}/include) 
link_directories(${PROJECT_SOURCE_DIR}/lib) 

set(SOURCE_FILES main.cpp) 
add_executable(OpenGLTest ${SOURCE_FILES}) 

target_link_libraries(OpenGLTest mingw32 SDL2main SDL2) 

而且你要的文件「SDL2.dll」(位於\ bin中)複製到「的cmake - 構建 - 調試」文件夾中。下面是一個例子https://gyazo.com/fae7ab9ccc73e3a66e9d9c2d3419ff1e

PS:不要忘了「有」和「LIB」文件夾

這是一個示例代碼只是爲了測試它。

#include <iostream> 
#include <SDL.h> 

int main(int argc, char* argv []) { 
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { 
     std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; 
     return 1; 
    } 
    std::cout << "Hello, World!" << std::endl; 
    SDL_Quit(); 
    return 0; 
} 
1

我不能發表評論,但我覺得每一個環節的lib之前,您應該刪除libtarget_link_libraries(OpenGLTest SDL2main SDL2 SDL2_test)

(錯誤信息說找不到-llibSDL2main哪個正確的標誌應該是-lSDL2main

+0

對不起,它沒有奏效:c – SupineDread89

+0

這次的錯誤信息是什麼?我認爲你不需要'SDL2_test',並把'mingw32'放下:target_link_libraries(OpenGLTest mingw32 SDL2main SDL2)' – tntxtnt

+0

是這個,我改成了target_link_libraries(OpenGLTest mingw32 SDL2main SDL2)https://gyazo.com/06b897f383eed83ddfffe53612d25614 – SupineDread89

0
  1. 複製SDL2.dll(位於x86_64的-W64-的mingw32 \ BIN)到C:\ windows \ system32目錄是永久的解決方案和然後重新啓動操作系統。

  2. 不要忘記添加以下你的CMakeLists.txt

    • 集(CMAKE_CXX_FLAGS 「$ {} CMAKE_CXX_FLAGS -std = C++ 11 -lmingw32」) 集(CMAKE_EXE_LINKER_FLAGS「-static -libgcc -static-libstdC++「)