Với CMake, thông thường nên thực hiện xây dựng "ngoài nguồn" . Tạo của bạn CMakeLists.txttrong thư mục gốc của dự án của bạn. Sau đó, từ gốc của dự án của bạn:
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Và cho Debug(một lần nữa từ gốc của dự án của bạn):
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
Release/ Debugsẽ thêm các cờ thích hợp cho trình biên dịch của bạn. Ngoài ra còn có RelWithDebInfovà MinSizeRelxây dựng cấu hình.
Bạn có thể sửa đổi / thêm vào các cờ bằng cách chỉ định tệp toolchain mà bạn có thể thêm CMAKE_C_FLAGS_DEBUGvà CMAKE_C_FLAGS_RELEASEcác biến, ví dụ:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
Xem CMAKE_BUILD_TYPE để biết thêm chi tiết.
Đối với câu hỏi thứ ba của bạn, tôi không chắc chính xác những gì bạn đang hỏi. CMake sẽ tự động phát hiện và sử dụng trình biên dịch phù hợp cho các tệp nguồn khác nhau của bạn.
cmake -i ..thay thế, vì vậy cmake sẽ chạy tương tác, hỏi bạn loại xây dựng nào bạn muốn (Không có, Phát hành, Gỡ lỗi, MinSizeRel, RelWithDebInfo).