ファイル操作コマンド。
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
<content>を<filename>という名前のファイルに書き込みます。 ファイルが存在しない場合は、作成されます。 ファイルが既に存在する場合、WRITEmodeはそれを上書きし、APPENDmodeは最後に追加します。<filename>で指定されたパス内のnotexistを指定しないディレクトリが作成されます。
ファイルがビルド入力の場合は、configure_file()コマンドを使用して、ファイルの内容が変更されたときにのみファイルを更新します。
file(READ <filename> <variable> )
<filename>という名前のファイルからコンテンツを読み込み、<variable>に格納します。 必要に応じて、指定された<offset>から開始し、最大で<max-in>バイトを読み込みます。 HEXオプションを指定すると、データは十六進表現に変換されます(バイナリデータに便利です)。
file(STRINGS <filename> <variable> )
ASCII文字列のリストを<filename>から解析し、それを<variable>に格納します。 ファイル内のバイナリデータは無視されます。 キャリッジリターン(\r,CR)文字は無視されます。 オプションは次のとおりです:
LENGTH_MAXIMUM <max-len>
最大でも指定された長さの文字列のみを考慮してください。
LENGTH_MINIMUM <min-len>
少なくとも指定された長さの文字列のみを考慮してください。
LIMIT_COUNT <max-num>
抽出する個別の文字列の数を制限します。
LIMIT_INPUT <max-in>
ファイルから読み込む入力バイト数を制限します。
LIMIT_OUTPUT <max-out>
は、<variable>に格納する合計バイト数を制限します。
NEWLINE_CONSUME
改行文字(\n,LF)を文字列の内容の一部として扱います。
NO_HEX_CONVERSION
インテルHexおよびMotorola S-recordファイルは、このオプションが指定されていない限り、読み取り中に自動的にバイナリに変換されます。
REGEX <regex>
指定された正規表現に一致する文字列のみを考慮します。
ENCODING <encoding-type>
指定されたエンコーディングの文字列を考えてみましょう。 現在サポートされているエンコーディングは、UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BEです。 エンコードオプションが指定されておらず、ファイルにバイト順マークがある場合、エンコードオプションはバイト順マークを尊重するようにデフ
のように、次のようなコードがあります。
file(STRINGS myfile.txt myfile)
各項目が入力ファイルからの行である変数myfileにリストを格納します。
file(<HASH> <filename> <variable>)
<filename>の内容の暗号化ハッシュを計算し、<variable>に格納します。 サポートされている<HASH>アルゴリズム名は、string(<HASH>)コマンドでリストされているものです。
file(GLOB <variable> )file(GLOB_RECURSE <variable> )
<globbing-expressions>に一致するファイルのリストを生成し、それを<variable>に格納します。 グロビング式は規則的な式ですが、はるかに簡単です。 RELATIVEフラグが指定されている場合、結果はgivenpathへの相対パスとして返されます。 結果は辞書順に並べられます。
デフォルトではGLOBはディレクトリを一覧表示します-LIST_DIRECTORIESがfalseに設定されている場合、ディレクトリは結果で省略されます。
注
GLOBを使用してソースツリーからソースファイルのリストを収集することはお勧めしません。 CMakeListsがない場合。ソースが追加または削除されたときにtxtファイルが変更されると、生成されたビルドシステムはCMakeを再生成する時期を知ることができません。
グロビング式の例には次のものがあります:
*.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モードは、それらのディレクトリのすべてのサブディレクトリをトラバースし、ファイルと一致します。 シンボリックリンクのサブディレクトリは、FOLLOW_SYMLINKSが指定されているか、ポリシーCMP0009がNEWに設定されていない場合にのみトラバースされます。
デフォルトではGLOB_RECURSEは結果リストからディレクトリを省略します-LIST_DIRECTORIESをtrueに設定すると、結果リストにディレクトリが追加されます。FOLLOW_SYMLINKSが指定されているか、ポリシーCMP0009がOLDに設定されていない場合、LIST_DIRECTORIESはシンボリックリンクをディレクトリとして扱います。
再帰的なグロビングの例には次のものがあります:
/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)
ファイルシステム内のファイルまたはディレクトリを<oldname>から<newname>に移動し、宛先をアトミックに置き換えます。
file(REMOVE )file(REMOVE_RECURSE )
指定されたファイルを削除します。 REMOVE_RECURSEモードでは、指定されたファイルとディレクトリ、また空でないディレクトリが削除されます。 Agivenファイルが存在しない場合、エラーは出力されません。
file(MAKE_DIRECTORY )
必要に応じて、指定されたディレクトリとその親を作成します。
file(RELATIVE_PATH <variable> <directory> <file>)
a<directory>からa<file>への相対パスを計算し、それを<variable>に格納します。
file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)
TO_CMAKE_PATHモードは、ネイティブの<path>を前方スラッシュ(/)を持つcmake-stylepathに変換します。 入力は、単一のパスまたは$ENV{PATH}のようなシステム検索パスにすることができます。 検索パスは、;文字で区切られたcmakeスタイルのリストに変換されます。
TO_NATIVE_PATHモードは、cmakeスタイルの<path>をプラットフォーム固有のスラッシュを持つnativepathに変換します(Windowsでは\、他の場所では/)。
は、必ず<path>の前後に二重引用符を使用して、このコマンドの単一の引数として扱われることを確認します。
file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )
DOWNLOADモードは、指定された<url>をローカル<file>にダウンロードします。UPLOADモードは、ローカル<file>を指定された<url>にアップロードします。
DOWNLOADとUPLOADの両方のオプションは次のとおりです:
INACTIVITY_TIMEOUT <seconds>
非アクティブの期間が経過した後に操作を終了します。
LOG <variable>
操作の人間が読めるログを変数に格納します。
SHOW_PROGRESS
操作が完了するまで、進行状況情報をステータスメッセージとして出力します。
STATUS <variable>
操作の結果の状態を変数に格納します。ステータスは、長さ2の;で区切られたリストです。最初の要素は操作の数値戻り値で、2番目の要素はエラーの文字列値です。0数値エラーは、操作にエラーがないことを意味します。
TIMEOUT <seconds>
指定された合計時間が経過した後に操作を終了します。
USERPWD <username>:<password>
操作のためのユーザー名とパスワードを設定します。
HTTPHEADER <HTTP-header>
操作のためのHTTPヘッダー。 サブオプションは数回繰り返すことができます。
DOWNLOADへの追加オプションは次のとおりです:
EXPECTED_HASH ALGO=<value>
ダウンロードしたコンテンツハッシュが期待値と一致することを確認します。
ALGOはfile(<HASH>)でサポートされているアルゴリズムの1つです。一致しない場合、操作はエラーで失敗します。
EXPECTED_MD5 <value>
歴史的な短手のためのEXPECTED_HASH MD5=<value>。
TLS_VERIFY <ON|OFF>
https://Urlのサーバー証明書を検証するかどうかを指定します。デフォルトは検証しないことです。
TLS_CAINFO <file>
https://Url用のカスタム認証局ファイルを指定します。
https://Urlの場合、CMakeはOpenSSLサポートで構築する必要があります。 TLS/SSL証明書はデフォルトではチェックされません。 TLS_VERIFYをONに設定して証明書をチェックするか、EXPECTED_HASHを使用してダウンロードしたコンテンツを検証します。どちらのTLSオプションも指定されていない場合、CMakeは変数CMAKE_TLS_VERIFYとCMAKE_TLS_CAINFOをそれぞれチェックします。
file(TIMESTAMP <filename> <variable> )
<filename>の変更時刻の文字列表現を計算し、それを<variable>に格納します。 コマンドがatimestamp変数を取得できない場合は、空の文字列(””)に設定されます。
<format>およびUTCオプションのドキュメントについては、string(TIMESTAMP)コマンドを参照してください。
file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )
現在のCMake Generatorでサポートされている各ビルド構成の出力ファイルを生成します。 入力コンテンツからgenerator expressionsを評価して、出力コンテンツを生成します。 オプションは次のとおりです:
CONDITION <condition>
条件がtrueの場合にのみ、特定の設定の出力ファイルを生成します。 ジェネレータ式を評価した後、条件は0または1のいずれかでなければなりません。
CONTENT <content>
入力として明示的に指定されたコンテンツを使用します。
INPUT <input-file>
指定されたファイルの内容を入力として使用します。相対パスは、CMAKE_CURRENT_SOURCE_DIRの値に対して処理されます。 ポリシーCMP0070を参照してください。
OUTPUT <output-file>
生成する出力ファイル名を指定します。 設定固有の出力ファイル名を指定するには、$<CONFIG>などのジェネレータ式を使用します。 生成されたコンテンツが同一である場合にのみ、複数の構成で同じ出力ファイルが生成される場合があります。 それ以外の場合は、<output-file>は各構成の一意の名前に評価される必要があります。(ジェネレータ式を評価した後の)相対パスは、CMAKE_CURRENT_BINARY_DIRの値に対して扱われます。ポリシーCMP0070を参照してください。
正確に1つのCONTENTまたはINPUTオプションを指定する必要があります。 特定のOUTPUTファイルには、最大でもfile(GENERATE)の呼び出しによって名前を付けることができます。生成されたファイルは、その内容が変更された場合にのみ、後続のcmakerunsで変更され、そのタイムスタンプが更新されます。
また、file(GENERATE)は生成フェーズまで出力ファイルを作成しないことに注意してください。 出力ファイルは、file(GENERATE)コマンドが戻ったときにはまだ書き込まれておらず、プロジェクトのCMakeLists.txtファイルを処理した後にのみ書き込まれます。
file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )
COPY署名は、ファイル、ディレクトリ、およびシンボリックリンクをadestinationフォルダにコピーします。 相対入力パスは現在のソースディレクトリに対して評価され、相対宛先は現在のビルドディレクトリに対して評価されます。 Copyingpreserves入力ファイルのタイムスタンプ、およびファイルが同じタイムスタンプを持つ宛先に存在する場合に最適化します。 明示的な権限またはNO_SOURCE_PERMISSIONSが指定されていない限り、コピーはinputpermissionsを保持します(デフォルトはUSE_SOURCE_PERMISSIONSです)。
詳細についてはinstall(DIRECTORY)コマンドを参照してください, FILES_MATCHING, PATTERN, REGEX, とEXCLUDEのオプションを指定します。 ディレクトリをコピーすると、サブセットoffilesを選択するためにオプションが使用されていても、その内容のstructureofが保持されます。
INSTALL署名はCOPYとは若干異なります。CMAKE_INSTALL_MESSAGE変数の影響を受けます。NO_SOURCE_PERMISSIONSはデフォルトです。install()コマンドによって生成されたインストールスクリプトこの署名を使用します(内部で使用するための文書化されていないオプショ
file(LOCK <path> )
DIRECTORYオプションが存在しない場合は<path>で指定されたファイルをロックし、それ以外の場合はfile<path>/cmake.lockをロックします。 ファイルはGUARDオプションで定義されたスコープに対してロックされます(デフォルト値はPROCESSです)。 RELEASEオプションは、明示的にファイルのロックを解除するために使用することができます。 オプションTIMEOUTが指定されていない場合、CMakeはロックが成功するか致命的なエラーが発生するまで待機します。 TIMEOUTが0に設定されている場合、ロックは一度試行され、結果はすぐに報告されます。 TIMEOUTが0でない場合、CMakeは<seconds>値で指定された期間のファイルをロックしようとします。 RESULT_VARIABLEオプションがない場合、エラーは致命的と解釈されます。 それ以外の場合、結果は<variable>に格納され、成功した場合は0、失敗した場合はエラーメッセージになります。
ロックはアドバイザリであることに注意してください。他のプロセスがこのロックを実行する保証はありません。つまり、ロックは変更可能なリソースを共有する複数のCMakeインスタンスを同期させます。 DIRECTORYoption-locking親ディレクトリに適用される同様のロジックは、他のLOCKコマンドがanychildディレクトリまたはファイルをロックすることを妨げません。
ファイルを二度ロックしようとすることは許可されていません。 中間ディレクトリandfile自体が存在しない場合は、それらが作成されます。 GUARDおよびTIMEOUTオプションはRELEASE操作では無視されます。