file¶

ファイル操作コマンド。

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

<content><filename>という名前のファイルに書き込みます。 ファイルが存在しない場合は、作成されます。 ファイルが既に存在する場合、WRITEmodeはそれを上書きし、APPENDmodeは最後に追加します。(ファイルがビルド入力の場合は、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が指定されているか、ポリシーCMP0009NEWに設定されていない場合にのみトラバースされます。

デフォルトではGLOB_RECURSEは結果リストからディレクトリを省略します-LIST_DIRECTORIESをtrueに設定すると、結果リストにディレクトリが追加されます。FOLLOW_SYMLINKSが指定されているか、ポリシーCMP0009OLDに設定されていない場合、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>にアップロードします。

DOWNLOADUPLOADの両方のオプションは次のとおりです:

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_VERIFYONに設定して証明書をチェックするか、EXPECTED_HASHを使用してダウンロードしたコンテンツを検証します。どちらのTLSオプションも指定されていない場合、CMakeは変数CMAKE_TLS_VERIFYCMAKE_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はロックが成功するか致命的なエラーが発生するまで待機します。 TIMEOUT0に設定されている場合、ロックは一度試行され、結果はすぐに報告されます。 TIMEOUT0でない場合、CMakeは<seconds>値で指定された期間のファイルをロックしようとします。 RESULT_VARIABLEオプションがない場合、エラーは致命的と解釈されます。 それ以外の場合、結果は<variable>に保存され、成功した場合は0、失敗した場合はエラーメッセージになります。

ロックはアドバイザリであることに注意してください。他のプロセスがこのロックを実行する保証はありません。つまり、ロックは変更可能なリソースを共有する複数のCMakeインスタンスを同期させます。 DIRECTORYoption-locking親ディレクトリに適用される同様のロジックは、他のLOCKコマンドがanychildディレクトリまたはファイルをロックすることを妨げません。

ファイルを二度ロックしようとすることは許可されていません。 中間ディレクトリandfile自体が存在しない場合は、それらが作成されます。 GUARDおよびTIMEOUTオプションはRELEASE操作では無視されます。

コメントを残す

メールアドレスが公開されることはありません。