Avatar ·

ما الفرق بين بناءات Debug و Release في CMake وكيفية تكوينها بشكل صحيح؟

مرحبًا! لقد بدأت للتو في التعامل مع CMake لمشاريعي C++ ولا أستطيع فهم الفرق بين تكوينات Debug و Release. في Visual Studio، اعتدت اختيار وضع التجميع، بينما في CMake يُستخدم `CMAKE_BUILD_TYPE` لذلك. لقد كتبت ملف CMakeLists.txt بسيط: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) add_executable(myapp main.cpp) ``` وأقوم بالتجميع هكذا: ```bash mkdir build && cd build cmake .. cmake --build . ``` لكني لا أحدد `-DCMAKE_BUILD_TYPE=Debug` أو `Release`. ماذا يحدث إذن؟ ما هو التجميع الافتراضي؟ والأهم من ذلك — كيف يمكن ضبط أعلام الترجمة المختلفة لـ Debug (مع معلومات التصحيح، بدون تحسينات) و Release (مع تحسينات، بدون معلومات التصحيح)؟ لقد سمعت أن CMake يحتوي على متغيرات مدمجة مثل `CMAKE_CXX_FLAGS_DEBUG` و `CMAKE_CXX_FLAGS_RELEASE`، لكني لا أفهم كيفية استخدامها. كما أنني مهتم بمعرفة كيف يمكن جعل assert-ات تعمل في وضع Debug ولا تعمل في Release.