Potrzebuję napisać niestandardowe polecenie, które będzie działało, gdy plik A jest nowszy niż plik B. Jak to zrobić w CMake? Dzięki!Warunki warunkowe CMake: porównywanie znaczników czasu plików
Odpowiedz
Brzmi jak chcesz coś podobnego do tego:
add_custom_command(OUTPUT B
COMMAND ${CMAKE_COMMAND} -Dinput=A -P script_that_generates_B.cmake
DEPENDS A
)
Gdzie „B” jest pełną ścieżką do pliku wyjściowego, „a” jest pełna ścieżka do jakiegoś pliku wejściowego, a polecenie jest coś który działa w czasie kompilacji, aby wygenerować B po każdej zmianie.
Aby reguła generująca B była wykonywana w czasie kompilacji, coś innego również musi zależeć od B. Powinien pojawić się jako ZALEŻKA od add_custom_target, który znajduje się w "all" lub jako plik źródłowy do polecenia add_library lub add_executable, aby uruchomić polecenie.
EDIT:
Można również użyć konstrukt
if(file1 IS_NEWER_THAN file2)
w CMake skonfigurować czas, jeżeli jest to konieczne. Dokumentacja polecenia IF jest dość długa, ale searching on this page dla IS_NEWER_THAN dostarcza ten samorodek:
"Prawda, jeśli plik1 jest nowszy niż plik2 lub jeśli jeden z dwóch plików nie istnieje. Zachowanie jest dobrze zdefiniowane tylko dla pełnych ścieżki. "