ファイル操作コマンド。
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
<content>
を<filename>
という名前のファイルに書き込みます。 ファイルが存在しない場合は、作成されます。 ファイルが既に存在する場合、WRITE
modeはそれを上書きし、APPEND
modeは最後に追加します。<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インスタンスを同期させます。 DIRECTORY
option-locking親ディレクトリに適用される同様のロジックは、他のLOCK
コマンドがanychildディレクトリまたはファイルをロックすることを妨げません。
ファイルを二度ロックしようとすることは許可されていません。 中間ディレクトリandfile自体が存在しない場合は、それらが作成されます。 GUARD
およびTIMEOUT
オプションはRELEASE
操作では無視されます。