将 SDL2 与 CMake 一起使用

新手上路,请多包涵

我正在尝试使用 CLion 创建一个 SDL2 项目。问题是使用#include 时找不到SDL 标头。

我的 CMakeLists.txt 文件:

 cmake_minimum_required(VERSION 2.8.4)
project(ChickenShooter)

set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)

include_directories(${SDL2_INCLUDE_DIR})
set(SOURCE_FILES main.cpp)

add_executable(ChickenShooter ${SOURCE_FILES})
target_link_libraries(ChickenShooter ${SDL2_LIBRARY})

我的测试 main.cpp:

 #include <iostream>
#include "SDL.h" /* This one can't be found */

int main(){
    if (SDL_Init(SDL_INIT_VIDEO) != 0){
        std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
        return 1;
    }
    SDL_Quit();
    return 0;
}

谢谢你能给我的任何帮助。

编辑:我使用的是 Windows,CLion 配置为使用 cygwin64。

原文由 Ovenkoek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

不要手动设置 SDL2 的路径。使用使用 FindSDL 的正确 find 命令。应该看起来像:

 find_file(SDL2_INCLUDE_DIR NAME SDL.h HINTS SDL2)
find_library(SDL2_LIBRARY NAME SDL2)
add_executable(ChickenShooter main.cpp)
target_include_directories(ChickenShooter ${SDL2_INCLUDE_DIR})
target_link_libraries(ChickenShooter ${SDL2_LIBRARY})

如果找不到 SDL2,则必须将 SDL2 的路径添加到 CMAKE_PREFIX_PATH ,这是 CMake 查找已安装软件的地方。

如果您可以使用 Pkg-config,它的使用可能会更容易,请参阅 How to use SDL2 and SDL_image with cmake

如果您觉得使用 CMake 提供的类似于 FindSDL.cmake 的 FindSDL2.cmake 文件更舒服,请参阅 https://brendanwhitfield.wordpress.com/2015/02/26/using-cmake-with-sdl2/

原文由 usr1234567 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Linux 上,在 Clion 中,这有效:

 cmake_minimum_required(VERSION 3.20)
project(first_game)

set(CMAKE_CXX_STANDARD 14)

find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

原文由 Eric 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题