无法让 SDL2 与 MinGW、VSCode 和 Windows 上的 CMake 一起工作 10

Can't get SDL2 to work with MinGW, VSCode and CMake on Windows 10

我想在 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,您需要在某处设置工具链文件。 在 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.txt 文件和完全可移植(且无痛)的过程。