plik¶

polecenie manipulacji plikiem.

file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)

Zapisz <content>do pliku o nazwie <filename>. Jeśli plik nie istnieje, zostanie utworzony. Jeśli plik już istnieje, tryb WRITEnadpisze go, a tryb APPEND dołączy do końca.(Jeśli plik jest wejściem kompilacji, użyj polecenia configure_file(), aby zaktualizować plik tylko wtedy, gdy zmieni się jego zawartość.)

file(READ <filename> <variable> )

odczytaj zawartość z pliku o nazwie <filename>i zapisz ją w pliku<variable>. Opcjonalnie zacznij od podanego <offset> i co najwyżej <max-in> bajtów. Opcja HEX powoduje, że dane są konwertowane na reprezentację szesnastkową (przydatną dla danych binarnych).

file(STRINGS <filename> <variable> )

parsuje listę ciągów ASCII z <filename>i przechowuje ją w<variable>. Dane binarne w pliku są ignorowane. Znaki powrotu karetki (\r, CR) są ignorowane. Opcje są następujące:

LENGTH_MAXIMUM <max-len>

rozważ tylko ciągi o co najwyżej określonej długości.

LENGTH_MINIMUM <min-len>

rozważaj tylko ciągi o co najmniej określonej długości.

LIMIT_COUNT <max-num>

Ogranicz liczbę wyodrębnionych łańcuchów.

LIMIT_INPUT <max-in>

Ogranicz liczbę bajtów wejściowych do odczytu z pliku.

LIMIT_OUTPUT <max-out>

Ogranicz liczbę wszystkich bajtów do przechowywania w <variable>.

NEWLINE_CONSUME

traktuj znaki nowej linii (\n, LF) jako część zawartości łańcucha zamiast kończenia na nich.

NO_HEX_CONVERSION

pliki Intel Hex I Motorola s-record są automatycznie konwertowane do odczytu, chyba że podano tę opcję.

REGEX <regex>

rozważaj tylko ciągi, które pasują do podanego wyrażenia regularnego.

ENCODING <encoding-type>

rozważ ciągi danego kodowania. Obecnie obsługiwane kodowania to: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Jeśli opcja kodowania nie jest podana, a plik ma znak kolejności bajtów, opcja kodowania będzie domyślnie zgodna ze znakiem kolejności bajtów.

na przykład kod

file(STRINGS myfile.txt myfile)

przechowuje listę w zmiennej myfile, w której każdy element jest linefrom z pliku wejściowego.

file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)

Oblicz kryptograficzny hash zawartości <filename> i zachowaj go w <variable>.

file(GLOB <variable> )file(GLOB_RECURSE <variable> )

generuje listę plików, które pasują do <globbing-expressions>i zapisuje ją do <variable>. Wyrażenia globbingowe są podobne do wyrażeń toregularnych, ale znacznie prostsze. Jeśli znacznik RELATIVE jest określony, wyniki zostaną zwrócone jako ścieżki względne do danej ścieżki. Nie jest określona konkretna kolejność wyników. Jeśli kolejność jest ważna, to należy jawnie usunąć listę (np. za pomocą polecenia list(SORT)).

domyślnie GLOB listuje Katalogi – Katalogi są pomijane, jeśliLIST_DIRECTORIES ma wartość false.

Uwaga

nie zalecamy używania GLOB do zbierania listy plików źródłowych z drzewa źródeł. Jeśli nie ma Cmakelistów.plik TXT zmienia się po dodaniu lub usunięciu źródła, a wygenerowany system kompilacji nie może wiedzieć, kiedy Mask CMake do regeneracji.

przykładowe wyrażenia globbingowe obejmują:

*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt

tryb GLOB_RECURSE przejrzy wszystkie podkatalogi katalogu i dopasuje pliki. Podkatalogi, które są symlinkami, są przeglądane tylko wtedy, gdy podano FOLLOW_SYMLINKS lubCMP0009 nie jest ustawione na NEW.

domyślnie GLOB_RECURSE pomija katalogi z listy wyników-ustawienieLIST_DIRECTORIES na true dodaje katalogi do listy wyników.Jeśli podano FOLLOW_SYMLINKS lub CMP0009 nie jest ustawione naOLD, to LIST_DIRECTORIES traktuje dowiązania symboliczne jako katalogi.

przykłady rekurencyjnego globsowania obejmują:

/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)

Przenieś plik lub katalog w systemie plików z <oldname> do<newname>, zastępując miejsce docelowe atomowo.

file(REMOVE )file(REMOVE_RECURSE )

Usuń podane pliki. Tryb REMOVE_RECURSE usunie pliki givenfiles i katalogi, także niepuste katalogi

file(MAKE_DIRECTORY )

Utwórz podane katalogi i ich rodziców w razie potrzeby.

file(RELATIVE_PATH <variable> <directory> <file>)

Oblicz ścieżkę względną z <directory> do <file>i zachowaj ją w <variable>.

file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)

tryb TO_CMAKE_PATH konwertuje natywną ścieżkę <path>na ścieżkę cmake-stylepath z ukośnikami do przodu (/). Wejście Może być pojedynczą ścieżką lub ścieżką wyszukiwania systemu, jak $ENV{PATH}. Ścieżka wyszukiwania zostanie przekonwertowana na Listę w stylu cmake oddzieloną znakami ;.

tryb TO_NATIVE_PATH konwertuje styl cmake<path> na nativepath z ukośnikami specyficznymi dla platformy (\ w systemie Windows i / gdzie indziej).

Zawsze używaj podwójnych cudzysłowów wokół <path>, aby mieć pewność, że jest traktowany jako pojedynczy argument tego polecenia.

file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )

tryb DOWNLOAD pobiera podaną <url> do lokalnego <file>.Tryb UPLOAD wysyła lokalny <file> do danego <url>.

opcje zarówno DOWNLOAD, jak i UPLOAD są:

INACTIVITY_TIMEOUT <seconds>

Zakończ operację po okresie bezczynności.

LOG <variable>

przechowuje czytelny dla człowieka dziennik operacji w zmiennej.

SHOW_PROGRESS

wypisuje informacje o postępach w postaci komunikatów o stanie do momentu zakończenia operacji.

STATUS <variable>

przechowuj wynikowy status operacji w zmiennej.Status jest rozdzieloną listą ; o długości 2.Pierwszy element jest numeryczną wartością zwracaną dla operacji, a drugi element jest wartością łańcuchową błędu.0 błąd liczbowy oznacza brak błędu w operacji.

TIMEOUT <seconds>

Zakończ operację po upływie określonego całkowitego czasu.

dodatkowymi opcjami do DOWNLOAD są:

EXPECTED_HASH ALGO=<value>

sprawdź, czy hash pobranej zawartości odpowiada wartości oczekiwanej, gdzieALGO jest jednym z MD5, SHA1, SHA224, SHA256, SHA384, lubSHA512 Jeśli nie pasuje, operacja zakończy się błędem.

EXPECTED_MD5 <value>

historyczny skrót dla EXPECTED_HASH MD5=<value>.

TLS_VERIFY <ON|OFF>

Określ, czy należy zweryfikować certyfikat serwera dla adresów URL https://.Domyślną wartością jest brak weryfikacji.

TLS_CAINFO <file>

Określ niestandardowy plik urzędu certyfikacji dla adresów URL https://.

dla https:// adresów URL CMake musi być zbudowany z obsługą OpenSSL. TLS/SSL certyfikaty nie są domyślnie sprawdzane. Ustaw TLS_VERIFY na ON, aby sprawdzić certyfikaty i / lub użyj EXPECTED_HASH, aby zweryfikować pobraną zawartość.Jeśli nie podano żadnej z opcji TLS, CMake sprawdzi odpowiednio zmienneCMAKE_TLS_VERIFY i CMAKE_TLS_CAINFO.

file(TIMESTAMP <filename> <variable> )

Oblicz ciąg znaków czasu modyfikacji <filename>i zapisz go w <variable>. Jeśli polecenie nie będzie w stanie uzyskać atimestamp zmienna zostanie ustawiona na pusty łańcuch (“”).

Zobacz polecenie string(TIMESTAMP), aby uzyskać dokumentację opcji <format> i UTC.

file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )

Generowanie pliku wyjściowego dla każdej konfiguracji kompilacji obsługiwanej przez bieżącąCMake Generator. Obliczgenerator expressions z zawartości wejściowej, aby wygenerować zawartość wyjściową. Opcje są następujące:

CONDITION <condition>

wygenerować plik wyjściowy dla konkretnej konfiguracji tylko jeżeli warunek jest true. Warunek musi być 0lub 1 po obliczeniu wyrażeń generatora.

CONTENT <content>

użyj treści podanych jawnie jako wejście.

INPUT <input-file>

użyj zawartości z podanego pliku jako wejścia.

OUTPUT <output-file>

Określ nazwę pliku wyjściowego do wygenerowania. Użyj wyrażeń generatora, takich jak $<CONFIG>, aby określić nazwę pliku wyjściowego specyficzną dla konfiguracji. Wiele konfiguracji może generować tylko ten sam plik wyjściowyjeśli wygenerowana zawartość jest identyczna. W przeciwnym razie <output-file> musi obliczyć unikalną nazwę dla każdej konfiguracji.

należy podać dokładnie jedną opcję CONTENT lub INPUT. Konkretny plikOUTPUTmoże być nazwany przez co najwyżej jedno wywołanie file(GENERATE).Wygenerowane pliki są modyfikowane przy kolejnych uruchomieniach cmake tylko wtedy, gdy ich zawartość uległa zmianie.

file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )

podpis COPY 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 wejścia, chyba że podano wyraźne uprawnienia lub NO_SOURCE_PERMISSIONS(domyślnie jest to USE_SOURCE_PERMISSIONS).

Zobacz polecenie install(DIRECTORY) w celu uzyskania dokumentacji, FILES_MATCHING, PATTERN, REGEX, i EXCLUDE opcji. Kopiowanie katalogów zachowuje strukturę ich zawartości, nawet jeśli do wyboru podzbioru plików używane są opcje.

sygnatura INSTALL różni się nieco od COPY: drukuje wiadomości status (podlegające zmiennej CMAKE_INSTALL_MESSAGE), A NO_SOURCE_PERMISSIONS jest domyślna.Skrypty instalacyjne generowane przez polecenie install() używają tej sygnatury (z niektórymi nieudokumentowanymi opcjami do użytku wewnętrznego).

file(LOCK <path> )

Zablokuj plik określony przez <path>, jeśli nie ma opcji DIRECTORY i plik<path>/cmake.lock w przeciwnym razie. Plik zostanie zablokowany dla zakresu zdefiniowanego przez opcjęGUARD (wartość domyślna to PROCESS). RELEASE można użyć opcji, aby jawnie odblokować plik. Jeśli opcja TIMEOUT nie jest określona, CMake będzie czekać, aż blokada się powiedzie lub wystąpi błąd krytyczny. Jeśli TIMEOUT jest ustawione na0 blokada zostanie wypróbowana raz, a wynik zostanie natychmiast zgłoszony. JeśliTIMEOUT nie jest 0 CMake spróbuje zablokować plik na okres określony przez wartość <seconds>. Wszelkie błędy będą interpretowane jako fatalne, jeśli nie ma opcjiRESULT_VARIABLE. W przeciwnym razie wynik będzie przechowywany w <variable>i będzie 0 w przypadku sukcesu lub Komunikatu o błędzie w przypadku niepowodzenia.

zauważ, że lock ma charakter doradczy – nie ma gwarancji, że inne procesy będą go obsługiwać, np. lock synchronizuje dwie lub więcej instancji CMake sharingsome modyfikowalne zasoby. Podobna logika zastosowana do DIRECTORY opcja-blokowanie katalogu nadrzędnego nie uniemożliwia innym poleceniom LOCK zablokowania dowolnego katalogu lub pliku.

dwukrotne blokowanie pliku nie jest dozwolone. Wszelkie pośrednie katalogi i sam plik zostaną utworzone, jeśli nie istnieją. Opcje GUARD i TIMEOUTignorowane podczas operacji RELEASE.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.