2012-01-26 34 views

Trả lời

259

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

+0

Điều này phù hợp với tôi nhờ =) – Mythli

126

Để 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ờ.

+4

nên là câu trả lời! cụ thể hơn và an toàn hơn để sử dụng! – Gabriel

+0

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

+0

@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ì? –

Các vấn đề liên quan