Làm cách nào để xác định biến tiền xử lý thông qua cmake?Xác định macro tiền xử lý thông qua cmake
Mã tương đương sẽ là #define foo
.
Làm cách nào để xác định biến tiền xử lý thông qua cmake?Xác định macro tiền xử lý thông qua cmake
Mã tương đương sẽ là #define foo
.
CMake có lệnh add_definitions
cho mục đích này. Một ví dụ:
add_definitions(-DOPENCV_VERSION=${OpenCV_VERSION})
add_definitions(-DWITH_OPENCV2)
Mặc dù nó trông rất biên dịch cụ thể, nó hoạt động đa nền tảng do một số thủ đoạn gian trá chúng ta đều biết và tình yêu từ CMake. CMake là một hệ thống tồi tàn.
More giải thích về lệnh ở đây: https://cmake.org/cmake/help/latest/command/add_definitions.html
Để làm điều này cho một mục tiêu cụ thể, bạn có thể làm như sau:
target_compile_definitions(my_target PRIVATE FOO=1 BAR=1)
Bạn nên làm điều này nếu bạn có nhiều hơn một mục tiêu mà bạn đang xây dựng và bạn không muốn tất cả họ sử dụng cùng một lá cờ.
nên là câu trả lời! cụ thể hơn và an toàn hơn để sử dụng! – Gabriel
Tôi nghĩ tùy chọn này chỉ hoạt động nếu mục tiêu tùy chỉnh được xác định. Tôi không thể làm điều này để làm việc cho mục tiêu mặc định. – Mike
@JimHunziker 'target_compile_definitions (my_target PRIVATE FOO = 1)' khác với 'set_source_files_properties (foo.cpp PROPERTIES COMPILE_DEFINITIONS -DFOO = 1)' là gì? –
Điều này phù hợp với tôi nhờ =) – Mythli