tôi có một phần của mã được điều kiện kích hoạt tùy thuộc vào một #define, như thế này:Làm cách nào để xác định biến khi tôi gọi CMake, sao cho qtcreator biết nó được xác định?
#ifdef VARIABLE
code.function();
#endif
Kịch bản cmake có lệnh 'tùy chọn' mà đặt BIẾN như thế này:
option(VARIABLE "Want to use VARIABLE?" ON)
if(VARIABLE)
message(STATUS "VARIABLE")
set(VARIABLE_FLAG "-DVARIABLE")
endif()
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VARIABLE_FLAG} -Wall")
Tôi đang sử dụng cmake để xây dựng dự án và qtcreator như IDE. Vấn đề của tôi là qtcreator nghĩ rằng VARIABLE không được định nghĩa sao cho mã của tôi không được đánh dấu, nhưng khi tôi xây dựng nó trên một giao diện điều khiển, VARIABLE được định nghĩa. Vì vậy, những thông số nào tôi nên vượt qua để qtcreator để chạy cmake, để nó biết VARIABLE được định nghĩa và làm nổi bật mã của tôi? Có cách nào để làm việc này không?
Ps: Tôi chỉ sử dụng qtcreator để chỉnh sửa tệp, phần xây dựng được thực hiện thông qua các lệnh trên bảng điều khiển.
Sự phức tạp hơn tôi chỉ muốn sửa lỗi cú pháp của qtcreator, nhưng nó hoạt động. Bên cạnh đó, tôi đã học được cách cấu hình các tập tin tiêu đề bằng cmake, vì vậy tôi nghĩ đó là một câu trả lời tuyệt vời. Ngoài ra, cảm ơn vì đã làm cho câu hỏi của tôi rõ ràng hơn. – Salsa
Bạn được chào đón! Nói chung, tôi nghĩ tốt nhất nên sử dụng tệp tiêu đề chỉ được bao gồm khi cần thiết để thực hiện một việc như thế này. Bằng cách đó, chỉ các tệp cần xây dựng lại mới được xây dựng lại sau khi thay đổi giá trị VARIABLE trong CMake ... Cách tốt nhất thứ hai là sử dụng add_definitions() ở tệp CMakeLists cấp cao nhất để tất cả các tệp đã biên dịch nhận được Định nghĩa. Nhưng sau đó nếu bạn thay đổi giá trị trong CMake, nó dẫn đến việc xây dựng lại hoàn toàn. – DLRdave