Как включить SDL в проект clion?

#c #windows #cmake #sdl

#c #Windows #cmake #sdl

Вопрос:

Я только что установил Clion, и он использует CMake, и у меня возникли проблемы с правильным включением внешних библиотек. Я никогда раньше не использовал CMake, и теперь я борюсь с этим. Я уже некоторое время использую premake.

Я хочу иметь SDL в качестве подмодуля git из этого репозитория https://github.com/davidsiaw/SDL2

Я искал ответ в течение нескольких часов и до сих пор не могу понять его правильно. Я полный новичок в cmake.

мой проект выглядит так:

 ProjectName/
|--- CMakeLists.txt
|
|--- src/
     |--- main.cpp
     |--- CMakeLists.txt
|
|--- Dependencies/
     |--- SDL2
  

мои списки src cmake

 add_executable(ProjectName main.cpp)
  

и основной файл CMake

 cmake_minimum_required(VERSION 3.17)
project(ProjectName)

set(CMAKE_CXX_STANDARD 20)

include_directories(Dependencies/SDL2/include)

add_subdirectory(src)
add_subdirectory(Dependencies/SDL2)

target_link_libraries(ProjectName PRIVATE SDL2main)
target_link_libraries(ProjectName PRIVATE SDL2)
  

и main.cpp

 #include <iostream>

#include "SDL.h"

int main(int* argc, char* args[])
{
    std::cout << "Hello, World!n";
    return 0;
}
  

Я получаю это сообщение об ошибке

 In file included from /cygdrive/c/Users/mprze/OneDrive/Pulpit/ProjectName/Dependencies/SDL2/src/./SDL_internal.h:48,
                 from /cygdrive/c/Users/mprze/OneDrive/Pulpit/ProjectName/Dependencies/SDL2/src/SDL.c:21:
/cygdrive/c/Users/mprze/OneDrive/Pulpit/ProjectName/Dependencies/SDL2/include/SDL_config.h:50:2: error: #error Wrong SDL_config.h, check your include path?
  

Как правильно его добавить?

Комментарии:

1. Вероятно, это не исправит ошибку компиляции, но вы, похоже, забыли конечную кавычку в строке, которую вы выводите в своей main функции.

2. Вы пытались создать свой клон SDL2 как отдельный проект (запустив cmake с исходным каталогом SDL2, а не с исходным каталогом вашего проекта)? Возможно, сам клон прослушивается.

3. @NathanMills правильно, исправлено.

4. @Tsyvarev Да, у меня есть. Он отлично строится.

5.Хорошо, похоже, ваш include_directories(Dependencies/SDL2/include) проект SDL2 сбивает с толку: он добавляет каталог include, который не предназначен для использования самим SDL2. Либо переместить include_directories вызов после add_subdirectory(Dependencies/SDL2) , либо заменить этот вызов на target_include_directories для соответствующей цели.