CMake での SDL2 の使用: 無効なヘッダー インクルードへの対処
CLion と CMake を使用して SDL2 をプロジェクトに統合する場合、開発者はインクルードで問題が発生する可能性があります。ヘッダー パスの解決に失敗したため、必要なヘッダーが失われています。この記事は、この問題に対処し、包括的な解決策を提供することを目的としています。
提供された CMakeLists.txt ファイルでは、SDL2 インクルード ディレクトリとライブラリへのパスが明示的に設定されています:
set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)
ただし、このアプローチは、指定されたパスが正しく、システムのヘッダー検索パスが適切に構成されているという前提に基づいています。 &&&]
この問題を解決するには、CMake が提供する find_package() コマンドを使用することをお勧めします。このコマンドは、SDL2 ライブラリを自動的に検索し、SDL2_INCLUDE_DIRS や SDL2_LIBRARIES などの適切な変数を設定します。最近の CMake バージョン (3.7 以降など) を備えた Linux ベースのシステムの場合、このプロセスは簡単です。cmake_minimum_required(VERSION 3.7)
project(SDL2Test)
find_package(SDL2 REQUIRED)
Windows システムの場合は、抽出した SDL2 開発パッケージ ディレクトリ内に sdl-config.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)
CMake-GUI アプリケーション内でプロジェクトを構成すると、SDL2_DIR 変数が表示されます。これは、dev パッケージから抽出された SDL2 ディレクトリに設定する必要があります。このステップの後、再構成されたプロジェクトは必要なヘッダーとライブラリを正しく見つけ、使い慣れた構文 #includeを使用して SDL2 ヘッダーをシームレスに組み込むことができるようになります。 #include "SDL.h"
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3