Usando SDL2 com CMake: Endereçando cabeçalhos inválidos inclui
Ao integrar SDL2 em um projeto usando CLion e CMake, os desenvolvedores podem encontrar dificuldades para incluir cabeçalhos necessários devido à resolução malsucedida do caminho do cabeçalho. Este artigo tem como objetivo resolver esse problema e fornecer uma solução abrangente.
No arquivo CMakeLists.txt fornecido, o caminho para o diretório de inclusão do SDL2 e as bibliotecas é definido explicitamente:
set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)
No entanto, esta abordagem baseia-se na suposição de que os caminhos especificados estão corretos e que os caminhos de pesquisa de cabeçalho do sistema estão configurados corretamente.
Para resolver esse problema, recomendamos usar o comando find_package() fornecido pelo CMake. Este comando procurará automaticamente a biblioteca SDL2 e definirá as variáveis apropriadas, incluindo SDL2_INCLUDE_DIRS e SDL2_LIBRARIES.
Para sistemas baseados em Linux com versões recentes do CMake (por exemplo, 3.7 ou posterior), este processo deve ser simples:
cmake_minimum_required(VERSION 3.7)
project(SDL2Test)
find_package(SDL2 REQUIRED)
Para sistemas Windows, é necessário criar manualmente um arquivo sdl-config.cmake dentro do diretório extraído do pacote de desenvolvimento SDL2. Aqui está um exemplo do conteúdo do arquivo:
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)
Ao configurar o projeto dentro da aplicação CMake-GUI, a variável SDL2_DIR aparecerá. Deve ser definido para o diretório SDL2 extraído do pacote dev. Após esta etapa, o projeto reconfigurado deverá encontrar corretamente os cabeçalhos e bibliotecas necessários, permitindo a inclusão perfeita de cabeçalhos SDL2 usando a sintaxe familiar:
#include
#include "SDL.h"
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3