CMake での SDL2 の使用: 無効なヘッダー インクルードへの対処
CLion と CMake を使用して SDL2 をプロジェクトに統合する場合、開発者はインクルードで問題が発生する可能性があります。ヘッダー パスの解決に失敗したため、必要なヘッダーが失われています。この記事は、この問題に対処し、包括的な解決策を提供することを目的としています。
提供された CMakeLists.txt ファイルでは、SDL2 インクルード ディレクトリとライブラリへのパスが明示的に設定されています。
<code class="cmake">set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include) set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)</code>
ただしこのアプローチは、指定されたパスが正しく、システムのヘッダー検索パスが適切に構成されているという前提に基づいています。
この問題を解決するには、CMake が提供する find_package() コマンドを使用することをお勧めします。このコマンドは、SDL2 ライブラリを自動的に検索し、SDL2_INCLUDE_DIRS や SDL2_LIBRARIES などの適切な変数を設定します。
最新の CMake バージョン (例: 3.7 以降) を備えた Linux ベースのシステムの場合、このプロセスは簡単です。
<code class="cmake">cmake_minimum_required(VERSION 3.7) project(SDL2Test) find_package(SDL2 REQUIRED)</code>
Windows システムの場合、抽出した SDL2 開発パッケージ ディレクトリ内に sdl-config.cmake ファイルを手動で作成する必要があります。ファイルの内容の例を次に示します。
<code class="cmake">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)</code>
CMake-GUI アプリケーション内でプロジェクトを構成すると、SDL2_DIR 変数が表示されます。これは、dev パッケージから抽出された SDL2 ディレクトリに設定する必要があります。このステップの後、再構成されたプロジェクトは必要なヘッダーとライブラリを正しく見つけ、使い慣れた構文
<code class="c++">#include <iostream> #include "SDL.h"</code>
以上がCMake で SDL2 を使用するときに無効なヘッダー インクルードを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。