file¶
ファイル操作コマンド。
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
<content>
を<filename>
という名前のファイルに書き込みます。 ファイルが存在しない場合は、作成されます。 ファイルが既に存在する場合、WRITE
modeはそれを上書きし、APPEND
modeは最後に追加します。(ファイルがビルド入力の場合は、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(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)
<filename>
の内容の暗号化ハッシュを計算し、それを<variable>
に格納します。
file(GLOB <variable> )file(GLOB_RECURSE <variable> )
<globbing-expressions>
に一致するファイルのリストを生成し、それを<variable>
に格納します。 グロビング式は規則的な式ですが、はるかに簡単です。 RELATIVE
フラグが指定されている場合、結果はgivenpathへの相対パスとして返されます。 結果の特定の順序は定義されていません。 順序が重要な場合は、リストを明示的にソートします(例:list(SORT)
コマンドを使用)。
デフォルトでは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
モードは、指定されたファイルとディレクトリ、また空でないディレクトリを削除します
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>
指定された合計時間が経過した後に操作を終了します。
DOWNLOAD
への追加オプションは次のとおりです:
EXPECTED_HASH ALGO=<value>
ダウンロードしたコンテンツハッシュが期待値と一致することを確認します。
ALGO
は次のいずれかですMD5
,SHA1
,SHA224
,SHA256
,SHA384
, またはSHA512
。 一致しない場合、操作はエラーで失敗します。
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>
指定されたファイルの内容を入力として使用します。
OUTPUT <output-file>
生成する出力ファイル名を指定します。 設定固有の出力ファイル名を指定するには、$<CONFIG>
などのジェネレータ式を使用します。 生成されたコンテンツが同一である場合にのみ、複数の構成で同じ出力ファイルが生成される場合があります。 それ以外の場合は、<output-file>
は各構成の一意の名前に評価される必要があります。
正確に一つのCONTENT
またはINPUT
オプションを指定する必要があります。 特定のOUTPUT
ファイルには、最大でもfile(GENERATE)
の呼び出しによって名前を付けることができます。生成されたファイルは、その内容が変更された場合にのみ、後続のcmakeの実行時に変更されます。
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
操作では無視されます。