استخدام SDL2 مع CMake: معالجة الترويسات غير الصالحة تتضمن
عند دمج SDL2 في مشروع باستخدام CLion وCMake، قد يواجه المطورون صعوبات في التضمين الرؤوس الضرورية بسبب دقة مسار الرأس غير الناجحة. تهدف هذه المقالة إلى معالجة هذه المشكلة وتوفير حل شامل.
في ملف 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)
ومع ذلك، يعتمد هذا الأسلوب على افتراض صحة المسارات المحددة وأن مسارات البحث عن رأس النظام تم تكوينها بشكل صحيح.
لحل هذه المشكلة، نوصي باستخدام أمر find_package() الذي يوفره CMake. سيبحث هذا الأمر تلقائيًا عن مكتبة SDL2 ويقوم بتعيين المتغيرات المناسبة، بما في ذلك SDL2_INCLUDE_DIRS وSDL2_LIBRARIES.
بالنسبة للأنظمة المستندة إلى Linux مع إصدارات CMake الحديثة (على سبيل المثال، 3.7 أو أحدث)، يجب أن تكون هذه العملية واضحة:
cmake_minimum_required(VERSION 3.7)
project(SDL2Test)
find_package(SDL2 REQUIRED)
بالنسبة لأنظمة Windows، من الضروري إنشاء ملف sdl-config.cmake يدويًا داخل دليل حزمة تطوير SDL2 المستخرج. فيما يلي مثال لمحتويات الملف:
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. يجب ضبطه على دليل SDL2 المستخرج من حزمة التطوير. بعد هذه الخطوة، يجب أن يجد المشروع المعاد تكوينه الرؤوس والمكتبات الضرورية بشكل صحيح، مما يسمح بالتضمين السلس لرؤوس SDL2 باستخدام الصيغة المألوفة:
#include
#include "SDL.h"
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3