2011-10-17 1 views

Odpowiedz

6

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. "