我一生都无法让SDL2与我的编程小组的项目一起工作。

我正在使用

-Clion 1.2.1

-SDL 2.0.3

-MinGW 5.0

编译器从包含SDL的Graphics.h文件中开始大吼大叫,如下所示:

#include <SDL.h>
#include <SDL_image.h>

错误是:
fatal error: SDL.h: No such file or directory
compilation terminated.

我尝试包括
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

仍然会产生相同的错误。

我从MinGW 32/64位开发库下载文件中下载了SDL,该文件来自:https://www.libsdl.org/download-2.0.php。我还将各自的..\SDL2\x86_64-w64-mingw32\include和lib链接到系统->高级系统设置->中的路径。

依然没有。
cmake_minimum_required(VERSION 3.3)
project(ClionProjects)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lsdl2")

set(SOURCE_FILES
        Kod/Graphics/Graphics.cc
        Kod/Graphics/Graphics.h
        Kod/Game/Game.cc
        Kod/Game/Game.h
        Kod/Gameboard/Gameboard.cc
        Kod/Gameboard/Gameboard.h
        Kod/Meeple/Meeple.cc
        Kod/Meeple/Meeple.h
        Kod/Player/Player.cc
        Kod/Player/Player.h
        Kod/Resource/Resource.cc
        Kod/Resource/Resource.h
        Kod/Tile/Tile.cc
        Kod/Tile/Tile.h
        Kod/Carcassonne.cc)


add_executable(ClionProjects ${SOURCE_FILES} Kod/Carcassonne.cc)
target_link_libraries(ClionProjects SDL2main SDL2 SDL2_image)

是我在Clion中拥有的cmakefile。我一直在努力尝试使它正常工作,但以前的Stackoverflow问题都未能解决我的问题。

最佳答案

我个人在项目中使用MSYS2。已安装SDL2的MINGW64版本和其他库,以及其他工具链(例如gcc,cmake和pkg-config)(工具链也是MINGW64版本)。

然后,将我的CLion工具链配置指向c:\msys2\mingw64,因为我在c:\msys2上安装了msys2。

FindPkgConfig CMake模块用于查找SDL2库并包含文件位置。

请找到下面的示例(我也使用FreeType2和harfbuzz)。重要的部分是FindPkgConfig部分(pkg_check_modules)和包含/链接部分。

修改cmake文件后,请确保重新加载配置。

cmake_minimum_required (VERSION 2.6)
project (pgengine)
# The version number.
set (Tutorial_VERSION_MAJOR 0)
set (Tutorial_VERSION_MINOR 1)

add_definitions(-std=c++11)
aux_source_directory(src SRC_LIST)
aux_source_directory(src/game SRC_LIST)
aux_source_directory(src/graphics SRC_LIST)
aux_source_directory(src/sound SRC_LIST)
aux_source_directory(src/system SRC_LIST)
aux_source_directory(src/visual_novel SRC_LIST)

add_executable(${PROJECT_NAME} ${SRC_LIST})

INCLUDE(FindPkgConfig)

pkg_check_modules(FREETYPE2 REQUIRED freetype2)
pkg_check_modules(HARFBUZZ REQUIRED harfbuzz)
pkg_check_modules(SDL2 REQUIRED sdl2)
pkg_check_modules(SDL2_IMAGE REQUIRED SDL2_image)
pkg_check_modules(SDL2_MIXER REQUIRED SDL2_mixer)


include_directories(${SDL2_INCLUDE_DIRS}
                    ${SDL2_IMAGE_INCLUDE_DIRS}
                    ${SDL2_MIXER_INCLUDE_DIRS}
                    ${FREETYPE2_INCLUDE_DIRS}
                    ${HARFBUZZ_INCLUDE_DIRS})

link_directories (${SDL2_LIBRARY_DIRS}
                  ${SDL2_IMAGE_LIBRARY_DIRS}
                  ${SDL2_MIXER_LIBRARY_DIRS}
                  ${FREETYPE2_LIBRARY_DIRS}
                  ${HARFBUZZ_LIBRARY_DIRS})

target_link_libraries (pgengine ${SDL2_LIBRARIES}
                                ${SDL2_IMAGE_LIBRARIES}
                                ${SDL2_MIXER_LIBRARIES}
                                ${FREETYPE2_LIBRARIES}
                                ${HARFBUZZ_LIBRARIES})

已在Windows(MSYS2)和Linux上进行了测试。

关于c++ - 使用MinGW使SDL2在Clion,Windows 10上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34180792/

10-13 08:40