Trong CMake> = 2.8, sử dụng target_compile_definitions
:
target_compile_definitions(MyTarget PUBLIC "$<$<CONFIG:DEBUG>:DEBUG>")
Khi biên dịch ở chế độ Gỡ lỗi, điều này sẽ xác định biểu tượng Gỡ lỗi để sử dụng trong mã của bạn. Nó sẽ hoạt động ngay cả trong các IDE như Visual Studio và Xcode mà cmake tạo ra một tệp duy nhất cho tất cả các chế độ biên dịch.
Bạn phải làm điều này cho từng mục tiêu [1]. Ngoài ra, bạn có thể sử dụng add_compile_options
(Cmake> = 3.0):
add_compile_options("$<$<CONFIG:DEBUG>:-DDEBUG>")
Lưu ý rằng các phiên bản gần đây của Visual C ++ (ít nhất là từ VS2015) cho phép / hoặc - cho các tham số, vì vậy nó sẽ hoạt động tốt trên các trình biên dịch. Lệnh này cũng hữu ích cho các tùy chọn biên dịch khác mà bạn có thể muốn thêm ("/ O2" trong chế độ phát hành cho MSVC hoặc "-O3" cho chế độ phát hành trong G ++ / Clang)
[1]: Lưu ý: trong CMake> = 3.12 (hiện tại là phiên bản beta) cũng có một add_compile_definitions
biểu thức hỗ trợ trình tạo, ảnh hưởng đến tất cả các mục tiêu.