Uso de SDL2 con CMake: cómo abordar las inclusiones de encabezado no válidas
Al integrar SDL2 en un proyecto que utiliza CLion y CMake, los desarrolladores pueden encontrar dificultades para incluir encabezados necesarios debido a una resolución fallida de la ruta del encabezado. Este artículo tiene como objetivo abordar este problema y proporcionar una solución integral.
En el archivo CMakeLists.txt proporcionado, la ruta al directorio de inclusión y las bibliotecas de SDL2 se establece explícitamente:
set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)
Sin embargo, este enfoque se basa en la suposición de que las rutas especificadas son correctas y que las rutas de búsqueda de encabezados del sistema están configuradas correctamente.
Para resolver este problema, recomendamos utilizar el comando find_package() proporcionado por CMake. Este comando buscará automáticamente la biblioteca SDL2 y establecerá las variables apropiadas, incluidas SDL2_INCLUDE_DIRS y SDL2_LIBRARIES.
Para sistemas basados en Linux con versiones recientes de CMake (por ejemplo, 3.7 o posterior), este proceso debería ser sencillo:
cmake_minimum_required(VERSION 3.7)
project(SDL2Test)
find_package(SDL2 REQUIRED)
Para sistemas Windows, es necesario crear manualmente un archivo sdl-config.cmake dentro del directorio del paquete de desarrollo SDL2 extraído. A continuación se muestra un ejemplo del contenido del archivo:
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)
Al configurar el proyecto dentro de la aplicación CMake-GUI, aparecerá la variable SDL2_DIR. Debe configurarse en el directorio SDL2 extraído del paquete de desarrollo. Después de este paso, el proyecto reconfigurado debería encontrar correctamente los encabezados y bibliotecas necesarios, permitiendo la inclusión perfecta de encabezados SDL2 utilizando la sintaxis familiar:
#include
#include "SDL.h"
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3