"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como corrigir inclusões de cabeçalho inválidas ao usar SDL2 com CMake?

Como corrigir inclusões de cabeçalho inválidas ao usar SDL2 com CMake?

Publicado em 2024-11-10
Navegar:941

How to Fix Invalid Header Includes When Using SDL2 with CMake?

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"
Tutorial mais recente Mais>

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