SDL2/_real_SDL_config.h:没有这样的文件或目录

问题描述 投票:0回答:3

我一直在尝试在 WSL (Ubuntu) 上设置 SDL2 并使用 cmake 和 mingw 交叉编译到 Windows。我遇到了这个问题,它无法尝试编译库文件本身:

In file included from /usr/include/SDL2/SDL_stdinc.h:31,
                 from /usr/include/SDL2/SDL_main.h:25,
                 from /usr/include/SDL2/SDL.h:32,
                 from /mnt/c/users/user/repos/project/final.cpp:5:
/usr/include/SDL2/SDL_config.h:4:10: fatal error: SDL2/_real_SDL_config.h: No such file or directory
    4 | #include <SDL2/_real_SDL_config.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

这是我的CmakeLists.txt

cmake_minimum_required(VERSION 3.12.4)  # CMake version check
project(name)
set(CMAKE_CXX_STANDARD 14)            # Enable c++14 standard
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${name_SOURCE_DIR}/CMakePath")
SET(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)

set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)


set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)t
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(SOURCE_FILES final.cpp Soldier.cpp TilesEnum.cpp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --static -std=c++0x -o test")

#add_executable(${PROJECT_NAME} src/test.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)

include_directories(${SDL2_INCLUDE_DIR}
                    ${SDL2_IMAGE_INCLUDE_DIR}
                    ${SDL2_TTF_INCLUDE_DIR})
target_link_libraries(name ${SDL2_LIBRARY}
                             ${SDL2_IMAGE_LIBRARIES}
                             ${SDL2_TTF_LIBRARIES})

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc")

到目前为止,我的运行理论是我安装了错误的库,但这并不能解释为什么它根本无法编译。我很失落。我找不到任何与此特定问题相关的内容,如果有,请将我链接到类似的内容。

c++ cmake g++ windows-subsystem-for-linux sdl-2
3个回答
1
投票

这个CMake文件有很多问题,有很多重复的代码。 Tsyvarev 的评论对解决这个问题很有帮助。


1
投票

fatal error: SDL2/_real_SDL_config.h
这意味着你的系统上没有安装SDL2库,那么你无法编译

  • SDL_config.h(64 位)
  • _real_SDL_config.h(32 位)

只需安装 32 位版本的 SDL2 lib:

sudo apt install libsdl2-dev:i386


0
投票

请勿在 Ubuntu 系统上运行

sudo apt install libsdl2-dev:i386
,以防止损坏
ubuntu-desktop

© www.soinside.com 2019 - 2024. All rights reserved.