ファイル操作コマンド。
file(WRITE filename "message to write"... )file(APPEND filename "message to write"... )file(READ filename variable )file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> filename variable)file(STRINGS filename variable )file(GLOB variable ...)file(GLOB_RECURSE variable ...)file(RENAME <oldname> <newname>)file(REMOVE )file(REMOVE_RECURSE )file(MAKE_DIRECTORY )file(RELATIVE_PATH variable directory file)file(TO_CMAKE_PATH path result)file(TO_NATIVE_PATH path result)file(DOWNLOAD url file )file(UPLOAD filename url )file(TIMESTAMP filename variable )file(GENERATE OUTPUT output_file <INPUT input_file|CONTENT input_content> )
WRITEは’filename’という名前のファイルにメッセージを書き込みます。 ファイルが既に存在する場合は上書きし、存在しない場合はファイルを作成します。 (ファイルがビルド入力の場合は、configure_fileを使用してファイルの内容が変更された場合にのみファイルを更新します。)
APPENDはWRITEと同じファイルにメッセージを書き込みますが、ファイルの最後にappendします
READはファイルの内容を読み取り、変数に格納します。これは、指定されたオフセットから開始され、numBytesまで読み込まれます。 HEXが指定された場合、バイナリデータはhexadecimal表現に変換され、これは変数に格納されます。
MD5、SHA1、SHA224、SHA256、SHA384、およびSHA512は、ファイルのコンテンツの暗号化ハッシュを計算します。
文字列は、ファイルからASCII文字列のリストを解析し、それを変数に格納します。 ファイル内のバイナリデータは無視されます。 キャリッジリターン(CR)文字は無視されます。 これは、自動的にバイナリ形式に変換されるIntel HexとMotorolaS-recordファイルのためにも動作します。 NO_HEX_CONVERSIONを使用してこれを無効にします。
LIMIT_COUNTは、返す文字列の最大数を設定します。 Limit_inputs入力ファイルから読み込む最大バイト数を設定します。LIMIT_OUTPUTは、outputvariableに格納する最大バイト数を設定します。 LENGTH_MINIMUMは、文字列の最小長を返すように設定します。 短い文字列は無視されます。 LENGTH_MAXIMUM返す文字列のmaximumlengthを設定します。 長い文字列は、最大長よりも長くない文字列に分割されます。 NEWLINE_CONSUMEを使用すると、改行を終了する代わりに文字列に含めることができます。
REGEXは、文字列がbereturnedに一致する必要がある正規表現を指定します。 典型的な使用法
file(STRINGS myfile.txt myfile)
各項目が入力ファイルからの行である変数”myfile”にリストを格納します。
GLOBはglobbingexpressionsに一致するすべてのファイルのリストを生成し、それを変数に格納します。 Globbing式は正規表現に似ていますが、はるかに簡単です。 式に対して相対フラグが指定されている場合、結果は指定されたパスへの相対パスとして返されます。 (GLOBを使用してソースツリーからソースファイルのリストを選択することはお勧めしません。 NoCMakeLists場合。ソースが追加または削除されたときに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は通常のGLOBと同様のリストを生成し、exceptitは一致したディレクトリのすべてのサブディレクトリをトラバースし、ファイルと一致します。 シンボリックリンクであるサブディレクトリは、follow_SYMLINKSが指定されているか、cmakeポリシー CMP0009がNEWに設定されていない場合にのみtraversedifになります。詳細については、cmake–help-policy CMP0009を参照してください。
再帰的なグロビングの例には次のものがあります:
/dir/*.py - match all python files in /dir and subdirectories
MAKE_DIRECTORYは、その親ディレクトリがまだ存在しない場合にも、指定されたディレクトリを作成します
RENAMEファイルシステム内のファイルまたはディレクトリを移動し、デスティネーションをアトミックに置き換えます。
REMOVEは指定されたファイルを削除し、サブディレクトリ
REMOVE_RECURSEは指定されたファイルとディレクトリを削除します。
RELATIVE_PATHはディレクトリから指定されたファイルへの相対パスを決定します。
TO_CMAKE_PATHは、pathをunix/でcmakeスタイルのパスに変換します。入力は、単一のパスまたは”EN ENV{PATH}”のようなシステムパスにすることができます。ENV呼び出しの周りの二重引用符に注意してくださいTO_CMAKE_PATH唯一の引数を取ります。 このコマンドは、PATH環境変数のようなパスのリストのネイティブlistdelimitersも変換します。
TO_NATIVE_PATHはTO_CMAKE_PATHと同じように動作しますが、acmakeスタイルのパスからwindowsおよび/forUNIXのネイティブパススタイルに変換されます。
DOWNLOAD指定されたURLを指定されたファイルにダウンロードします。 LOG varが指定されている場合、ダウンロードのログがvarに入れられます。 STATUS varが指定されている場合、操作のステータスはvarに入れられます。 ステータスは長さ2のリストで返されます。 最初の要素は操作のnumericreturn値で、2番目の要素はエラーのstringvalueです。 0の数値エラーは、操作にエラーがないことを意味します。 タイムアウト時間が指定されている場合、操作はtimeoutafter時間秒、時間は整数として指定する必要があります。 Theinactivity_timeoutは、操作が終了するまでのinactivityの秒数を整数で指定します。 ここで、algoはMD5、SHA1、SHA224、SHA256、SHA384、またはSHA512のいずれかです。 一致しない場合、操作はエラーで失敗します。 (”Expected_md5sum”は”EXPECTED_HASH MD5=sum”の短縮形です。)SHOW_PROGRESSが指定されている場合、操作が完了するまで、進行状況情報がステータスメッセージとして出力されます。 Https Urlの場合、CMakeはOpenSSLで構築する必要があります。 TLS/SSL証明書はデフォルトではチェックされません。 証明書を確認したり、ダウンロードしたコンテンツを確認するためにEXPECTED_HASHを使用したりするには、SETTLS_VERIFYをONにします。 TLS_CAINFOを設定して、customCertificate権限ファイルを指定します。 いずれかのTLSオプションが指定されていない場合は、それぞれCMAKE_TLS_VERIFYおよびCMAKE_TLS_CAINFO変数をチェックします。
UPLOAD指定されたファイルを指定されたURLにアップロードします。 ログvarが指定されている場合は、アップロードのログがvarに入れられます。 STATUS varが指定されている場合、操作のステータスはvarに入れられます。 ステータスは長さ2のリストで返されます。 最初の要素は操作のnumericreturn値で、2番目の要素はエラーのstringvalueです。 0の数値エラーは、操作にエラーがないことを意味します。 タイムアウト時間が指定されている場合、操作はtimeoutafter時間秒、時間は整数として指定する必要があります。 Theinactivity_timeoutは、操作が終了するまでのinactivityの秒数を整数で指定します。 SHOW_PROGRESSが指定されている場合は、操作が完了するまで進捗情報がステータスメッセージとして出力されます。
TIMESTAMPは、変更timeof filenameの文字列表現を変数に書き込みます。
コマンドがタイムスタンプ変数を取得できない場合は、空の文字列””になります。
詳細については、string TIMESTAMPサブコマンドのドキュメントを参照してください。
file()コマンドは、コピーとインストールの署名も提供します:
file(<COPY|INSTALL> files... DESTINATION <dir> ] )
コピー署名は、ファイル、ディレクトリ、およびシンボリックリンクをadestinationフォルダにコピーします。 相対入力パスは現在のソースディレクトリに対して評価され、相対宛先は現在のビルドディレクトリに対して評価されます。 Copyingpreserves入力ファイルのタイムスタンプ、およびファイルが同じタイムスタンプを持つ宛先に存在する場合に最適化します。 明示的なpermissionsまたはNO_SOURCE_PERMISSIONSが指定されていない限り、コピーはinputpermissionsを保持します(デフォルトはUSE_SOURCE_PERMISSIONSです)。 権限、パターン、正規表現、およびEXCLUDEoptionsのドキュメントについては、install(DIRECTORY)コマンドを参照してください。
インストール署名はcopyとは少し異なります。statusmessagesを出力し、NO_SOURCE_PERMISSIONSはdefaultです。 Install()コマンドによって生成されたインストールスクリプトは、この署名を使用します(内部使用のためのいくつかの文書化されたオプ
GENERATEは、<input_file>、または<input_content>からのコンテンツを含む<output_file>を書き込みます。 出力は、条件<条件>の内容に基づいて生成されます。 ファイルはCMakeの生成時に書き込まれ、入力にはgeneratorexpressionsが含まれている可能性があります。 <条件>、<output_file>、および<input_file>も生成式を含むことができます。 <条件>は、’0’または’1’のいずれかに評価する必要があります。 <output_file>は、すべての構成およびファイルのすべての呼び出し(GENERATE)の中で一意の名前に評価する必要があります。