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 zostanie dołączony do końca.Wszystkie katalogi w ścieżce określonej przez <filename>, które nie są widoczne, zostaną utworzone.

jeśli plik jest wejściem kompilacji, użyj polecenia configure_file(), aby zaktualizować plik tylko wtedy, gdy jego zawartość się zmieni.

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 łańcuchy, 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(<HASH> <filename> <variable>)

Oblicz kryptograficzny hash zawartości <filename> i zapisz go w <variable>. Obsługiwane nazwy algorytmu <HASH>są nazwami wymienionymi przez polecenie string(<HASH>).

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. Wyniki zostaną uporządkowane leksykograficznie.

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ą przeszukiwane 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, również niepuste katalogi. Jeśli plik agiven nie istnieje, nie jest emitowany żaden błąd.

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 dla obu DOWNLOAD 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.

USERPWD <username>:<password>

Ustaw nazwę użytkownika i hasło do operacji.

HTTPHEADER <HTTP-header>

nagłówek HTTP do operacji. Podwzgórze może być powtórzone kilka razy.

dodatkowymi opcjami do DOWNLOAD są:

EXPECTED_HASH ALGO=<value>

sprawdź, czy pobrany Skrót zawartości odpowiada wartości oczekiwanej, gdzieALGO jest jednym z algorytmów obsługiwanych przez file(<HASH>).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 pod kątem 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/SSLcertyfikaty 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> )

generuje plik wyjściowy 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>

generuje plik wyjściowy dla konkretnej konfiguracji tylko wtedy, gdy warunek jest prawdziwy. Warunek musi być 0 lub 1po obliczeniu wyrażeń generatora.

CONTENT <content>

użyj treści podanych jawnie jako danych wejściowych.

INPUT <input-file>

użyj zawartości z podanego pliku jako wejścia.Ścieżka względna jest traktowana w odniesieniu do wartościCMAKE_CURRENT_SOURCE_DIR. Zobacz politykę CMP0070.

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.Ścieżka względna (po obliczeniu wyrażeń generatora) jest traktowana względem wartości CMAKE_CURRENT_BINARY_DIR.Zobacz politykę CMP0070.

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, a ich znacznik czasu aktualizowany na kolejnych cmakerunach tylko wtedy, gdy ich zawartość zostanie zmieniona.

zauważ również, że file(GENERATE) nie tworzy pliku wyjściowego aż do fazy generowania. Plik wyjściowy nie zostanie jeszcze zapisany, gdy powróci poleceniefile(GENERATE), jest zapisywany tylko po przetworzeniu wszystkich plików CMakeLists.txt projektu.

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

zapoznaj się z poleceniem install(DIRECTORY) , 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, a 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śliTIMEOUT jest ustawione na 0 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.