【发布时间】: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”,它带有triplets,x64-windows 三元组允许我找到文件,但它不会编译,因为它是为 VSCommunity 设计的。我为 mingw x64-mingw-dynamic 和 x64-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