【问题标题】:Can't get SDL2 to work with MinGW, VSCode and CMake on Windows 10无法让 SDL2 在 Windows 10 上与 MinGW、VSCode 和 CMake 一起使用
【发布时间】:2021-03-01 01:09:51
【问题描述】:

我想在 Windows 10 上使用 VS Code、mingw 和 Cmake。我做了一个简单的应用程序:

-SDL2
-main.cpp
-CMakeLists.txt

这是我CMakeLists.txt的当前内容

cmake_minimum_required(VERSION 3.19.0)

project(main VERSION 1.0.0)
list(APPEND CMAKE_PREFIX_PATH SDL2)
find_package(SDL2 REQUIRED)

add_executable(main main.cpp)

target_link_directories(main PRIVATE ${SDL2_INCLUDE_DIRS})
target_link_libraries(main PRIVATE ${SDL2_LIBRARIES})

我的 SDL2 文件夹中还有一个 SDL2Config.cmake


set(SDL2_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include")

# Support both 32 and 64 bit builds
if (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
  set(SDL2_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2main.lib")
else ()
  set(SDL2_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2main.lib")
endif ()

string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)

构建此结果会导致找不到“SDL.h”,这是包含 #include<SDL2.h>

我也试过“vcpkg”,它带有tripletsx64-windows 三元组允许我找到文件,但它不会编译,因为它是为 VSCommunity 设计的。我为 mingw x64-mingw-dynamicx64-mingw-static 尝试了其他三元组,但他们都未能构建包。这是我用来安装 SDL2 vcpkg install SDL2:triplet 的命令,其中 triplet 是上述命令之一。

【问题讨论】:

  • 但他们都未能构建软件包您可能需要在 vcpkg 站点提交错误报告。
  • 我想那时我不能使用 vcpkg,但是使用 cmake 包含 SDL2 我会做错什么?好像我在这个过程中遗漏了一些东西。
  • target_link_directories(main PRIVATE ${SDL2_INCLUDE_DIRS}) 应该是 target_include_directories(main PRIVATE ${SDL2_INCLUDE_DIRS})
  • 感谢您的收获,遗憾的是它并没有改变任何事情。我仍然无法构建,它告诉我“SDL2.h:没有这样的文件或目录”

标签: c++ cmake mingw sdl-2 vcpkg


【解决方案1】:

如果您使用vcpkg,您需要在某处设置工具链文件。 可以在CMakeLists.txt 中设置,也可以在命令行参数中设置:

1。 CMakeLists.txt:

set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake
  CACHE STRING "Vcpkg toolchain file")

注意!确保路径正确!

2。作为命令行参数(我个人更喜欢这个以便于移植)

cmake .. -DCMAKE_TOOLCHAIN_FILE=C:<your-path>/vcpkg/scripts/buildsystems/vcpkg.cmake

vcpkg integration阅读此内容。
manifest mode 是终极的专业提示,因为这会导致干净的 CMakeLists.txtfile 和完全可移植(且无痛)的过程。

【讨论】:

  • 感谢清单提示,我在视频中看到了它,看起来很有希望。我已经让它与 vcpkg 一起使用,但仅与 msvc 一起使用,而不与 mingw 一起使用。看来mingw有点问题github.com/microsoft/vcpkg/issues/11900
  • 不客气。尝试设置CMAKE_TOOLCHAIN_FILE,无论如何都需要设置它。您可以在GitHub 上查看我的一个项目。
  • 我照你说的做了,现在我明白你为什么推荐它了。只需在 json 中添加一个条目,在 CMakeLists.txt 中添加两个条目并构建。非常好,谢谢提示
猜你喜欢
  • 2016-03-14
  • 1970-01-01
  • 2021-02-13
  • 2017-10-05
  • 2015-04-08
  • 2017-05-03
  • 2020-09-11
  • 2013-07-08
相关资源
最近更新 更多