polecenie manipulacji plikiem.
file(WRITE filename "message to write"... )file(APPEND filename "message to write"... )file(READ filename variable )file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> filename variable)file(STRINGS filename variable )file(GLOB variable ...)file(GLOB_RECURSE variable ...)file(RENAME <oldname> <newname>)file(REMOVE )file(REMOVE_RECURSE )file(MAKE_DIRECTORY )file(RELATIVE_PATH variable directory file)file(TO_CMAKE_PATH path result)file(TO_NATIVE_PATH path result)file(DOWNLOAD url file )file(UPLOAD filename url )file(TIMESTAMP filename variable )file(GENERATE OUTPUT output_file <INPUT input_file|CONTENT input_content> )
WRITE zapisze wiadomość do pliku o nazwie 'nazwa pliku’. Zapisuje plik, jeśli już istnieje, i tworzy plik, jeśli nie istnieje. (Jeśli plik jest wejściem kompilacji, użyj configure_file toupdate pliku tylko wtedy, gdy zmienia się jego zawartość.)
APPEND zapisze wiadomość do pliku tak samo jak WRITE, z tą różnicą, że do końca pliku
READ odczyta zawartość pliku i zapisze ją do zmiennej.Rozpocznie się od podanego offsetu i odczyta do numBytes. Jeśli podano hex dokumentu, dane binarne zostaną przekonwertowane na reprezentację heksadecymalną i zostaną zapisane w zmiennej.
MD5, SHA1, SHA224, SHA256, SHA384 i SHA512 obliczają Skrót acryptograficzny zawartości pliku.
STRINGS analizuje listę łańcuchów ASCII z pliku i przechowuje ją w zmiennej ina. Dane binarne w pliku są ignorowane. Znaki powrotu karetki (CR) są ignorowane. Działa również dla plików Intel Hex i MotorolaS-record, które są automatycznie konwertowane do formatu binarnego podczas ich odczytu. Wyłącz to za pomocą NO_HEX_CONVERSION.
LIMIT_COUNT ustawia maksymalną liczbę zwracanych łańcuchów. Limit_inputs ustawia maksymalną liczbę bajtów do odczytania z pliku wejściowego.LIMIT_OUTPUT ustawia maksymalną liczbę bajtów do przechowywania w zmiennej wyjściowej. LENGTH_MINIMUM ustawia minimalną długość łańcucha toreturn. Krótsze ciągi są ignorowane. LENGTH_MAXIMUM ustawia zwracaną maksymalną długość łańcucha. Dłuższe struny są dzielone na struny dłuższe niż maksymalna długość. NEWLINE_CONSUME umożliwia dodawanie nowych linii do łańcuchów zamiast ich kończenia.
REGEX określa Wyrażenie regularne, które łańcuch musi pasować do bereturned. Typowe użycie
file(STRINGS myfile.txt myfile)
przechowuje listę w zmiennej „myfile”, w której każdy element jest linefrom pliku wejściowego.
GLOB wygeneruje listę wszystkich plików, które pasują do globbingexpressions i zapisze ją do zmiennej. Wyrażenia globbingowe są podobne do wyrażeń regularnych, ale znacznie prostsze. Jeśli znacznik względny jest określony dla wyrażenia, wyniki zostaną zwrócone jako ścieżka względna do podanej ścieżki. (Nie zalecamy używania globu, aby pobrać listę plików źródłowych z drzewa źródłowego. Jeśli nocmakeliści.plik txt zmienia się po dodaniu lub usunięciu źródła, a następnie wygenerowany system kompilacji nie może wiedzieć, kiedy poprosić CMake o regenerację.)
przykłady wyrażeń globalizacyjnych to:
*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt
GLOB_RECURSE wygeneruje listę podobną do zwykłej GLOB, z wyjątkiem tego, że przemierzy wszystkie podkatalogi dopasowanego katalogu i dopasuje pliki. Podkatalogi, które są dowiązaniami symbolicznymi, są tylko traversedif FOLLOW_SYMLINKS is given or CMake policy CMP0009 is not set to NEW.Więcej informacji można znaleźć w cmake –help-policy CMP0009.
przykłady rekurencyjnego globowania obejmują:
/dir/*.py - match all python files in /dir and subdirectories
MAKE_DIRECTORY utworzy podane katalogi, również jeśli ich rodzicielskie katalogi jeszcze nie istnieją
RENAME przenosi plik lub katalog w obrębie systemu plików, zastępując atomicznie thedestination.
REMOVE usunie podane pliki, również w podkatalogach
REMOVE_RECURSE usunie podane pliki i katalogi, równieżonon-puste katalogi
RELATIVE_PATH określi względną ścieżkę z katalogu do danego pliku.
to_cmake_path zamieni ścieżkę do ścieżki w stylu cmake z unix /.Wejście Może być pojedynczą ścieżką lub ścieżką systemową, taką jak”$ENV{PATH}”.Zwróć uwagę na podwójne cudzysłowy wokół wywołania ENV TO_CMAKE_PATH tylko jako argument. Polecenie to skonwertuje również natywne listdelimitery na listę ścieżek, takich jak zmienna środowiskowa PATH.
to_native_path działa podobnie jak TO_CMAKE_PATH, ale konwertuje ze ścieżki w stylu acmake do natywnego stylu ścieżki dla windows i / forUNIX.
Pobierz pobierze podany URL do podanego pliku. Jeśli LOG var jest określony, dziennik pobierania zostanie umieszczony w var. Jeśli STATUS var jest określony, status operacji zostanie umieszczony w var. Status powrócił na liście długości 2. Pierwszym elementem jest wartość numericreturn dla operacji, a drugim elementem jest wartość stringvalue dla błędu. Błąd liczbowy 0 oznacza brak błędu w operacjioperacji. Jeśli określony jest TIMEOUT, operacja będzie timeoutpo czasie sekund, czas powinien być określony jako liczba całkowita. TheINACTIVITY_TIMEOUT określa całkowitą liczbę sekund inactivity, po której operacja powinna się zakończyć. Jeśli podano wartość exexpected_hash algo=, operacja zweryfikuje, czy pobrany hash pliku odpowiada wartości oczekiwanej, przy czym go jest jednym z MD5, SHA1, SHA224, SHA256, SHA384 lub SHA512. Jeśli nie pasuje, operacja zakończy się błędem. („EXPECTED_MD5sum „jest skrótem od”EXPECTED_HASH MD5=sum”.) Jeśli SHOW_PROGRESS jest określony, informacje o postępie będą drukowane jako komunikaty o statusie dopóki operacja nie zostanie zakończona. Dla adresów URL https CMake musi być zbudowany z OpenSSL. Certyfikaty TLS / SSL nie są domyślnie sprawdzane. SetTLS_VERIFY do Włącz, aby sprawdzić certyfikaty i / lub użyć EXPECTED_HASH do pobranej zawartości. Ustaw TLS_CAINFO, aby określić plik customCertificate Authority. Jeśli którakolwiek z opcji TLS nie jest podana CMakewill sprawdzić odpowiednio zmienne CMAKE_TLS_VERIFY i CMAKE_TLS_CAINFO.
UPLOAD prześle podany plik na podany adres URL. Jeśli LOG var jest określony, log uploadu zostanie umieszczony w var. Jeśli STATUS var jest określony, status operacji zostanie umieszczony w var. Status powrócił na liście długości 2. Pierwszym elementem jest wartość numericreturn dla operacji, a drugim elementem jest wartość stringvalue dla błędu. Błąd liczbowy 0 oznacza brak błędu w operacjioperacji. Jeśli określony jest TIMEOUT, operacja będzie timeoutpo czasie sekund, czas powinien być określony jako liczba całkowita. TheINACTIVITY_TIMEOUT określa całkowitą liczbę sekund inactivity, po której operacja powinna się zakończyć. Jeśli podano parametr show_progress, informacje o postępach będą drukowane jako komunikaty statusu, dopóki operacja nie zostanie zakończona.
TIMESTAMP zapisze łańcuchową reprezentację czasu modyfikacji nazwy pliku do zmiennej.
jeśli polecenie nie będzie w stanie uzyskać zmiennej znacznika czasu, zostanie ona przypisana do pustego łańcucha „”.
patrz dokumentacja podpowiedzi znacznik czasu dla moredetails.
polecenie file() udostępnia również sygnatury Kopiuj i instaluj:
file(<COPY|INSTALL> files... DESTINATION <dir> ] )
podpis kopiujący kopiuje pliki, katalogi i dowiązania symboliczne do folderu adestination. Względne ścieżki wejściowe są oceniane w odniesieniu do bieżącego katalogu źródłowego, a względne miejsce docelowe jest oceniane w odniesieniu do bieżącego katalogu kompilacji. Kopiowanie zachowuje znaczniki czasu pliku wejściowego i optymalizuje plik, jeśli istnieje w miejscu docelowym z tym samym znacznikiem czasu. Kopiowanie zachowuje zgłoszenia wejściowe, o ile nie są jawne uprawnienia lub BRAK_ŹRÓDŁA (domyślnie jest to USE_SOURCE_PERMISSIONS). Zobacz polecenie install (DIRECTORY), aby uzyskać dokumentację uprawnień, wzorców, wyrażeń regularnych i EXCLUDEoptions.
podpis instalacji różni się nieco od kopii: wypisuje statusmessages, a no_source_permissions jest domyślne. Skrypty instalacyjne generowane przez polecenie install() używają tej sygnatury (z pewnymi dokumentowanymi opcjami do użytku wewnętrznego).
generowanie spowoduje zapisanie pliku wyjściowego<> z zawartością z pliku wejściowego<> lub z<pliku wejściowego >. Wyjście jest generowanewspółmiernie na podstawie zawartości warunku < >. Plik jest zapisywany w czasie generowania CMake, a dane wejściowe mogą zawierać wyrażenia generujące. < warunek>, < output_file>i < input_file> mogą również zawierać wyrażenia generatora. Warunek <> musi obliczyć wartość ” 0 ” LUB „1”. < output_file > musi obliczyć do unikalnej nazwy pomiędzy wszystkimi konfiguracjami i wszystkimi wywołaniami pliku (GENERATE).