2011-06-06 57 views
5

Tôi đã tự hỏi nếu có một số cách để ngăn chặn make clean trong cmake từ xây dựng lại phụ thuộc bên ngoài. Tôi đang sử dụng ExternalProject để xây dựng thư viện C++ của bên thứ ba và chúng không phải được xây dựng lại ngay cả khi tôi làm make clean.cmake - ngăn chặn `làm sạch` khỏi làm sạch ExternalProject

Mặt khác, tôi có thể muốn tạo quy tắc mới, ví dụ: make really-clean, thậm chí còn xóa phụ thuộc. có cách nào tốt để làm điều này?

Cảm ơn.

Trả lời

4

Tôi giả sử bạn sử dụng ADD_CUSTOM_COMMAND hoặc ADD_LIBRARY hoặc ADD_ * khác để tạo tệp phụ thuộc.

Nếu ExternalProject của bạn có thư mục riêng của nó và bạn có thể đặt CMakeLists.txt trong thư mục đó, bạn dễ dàng có thể đặt sau trong CMakeLists.txt rằng:

SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1) 

Vì vậy, các tập tin phụ thuộc sẽ không được làm sạch.

Nếu không, bạn có thể cần phải tránh đặt phụ thuộc bên ngoài làm tệp đầu ra. Ví dụ, nếu bạn sử dụng

ADD_CUSTOM_COMMAND(OUTPUT libdep 
    COMMAND dep_gen_cmd 
    .... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    .... 
    DEPENDS libdep 
) 

thì bạn cần phải thay đổi nó thành:

ADD_CUSTOM_TARGET(libdep_gen 
     COMMAND dep_gen_cmd 
     ... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    COMMAND test -e libdep || make libdep_gen 
    ... 
) 
Các vấn đề liên quan