ما الفرق بين بناءات 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.