#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
для соответствующей цели.