実践C++応用講座CMake編こんにちは。CMakeをスクリプト・エンジンとして使う場合、stringコマンドは中心的な役割を担います。std::stringが持つのと同様な基本的機能に加えて、正規表現での検索や置換などstringコマンドは意外に強力です。それらのよく使う機能について解説します。それらについての解説です。文字列の結合としてstring(APPEND)があります。setコマンドでも同じことができます。setコマンドに対して特に利点があるというわけでもなさそうです。std::stringのappend()と同様な機能です。コマンドのフォーマットは以下の通りです。(入力文字列は複数指定でき、それらを全て結合します。部分取り出し文字列の一部を取り出すにはstring(SUBSTRING)を使います。std::stringのsubstr()と同様な機能です。コマンドのフォーマットは以下の通りです。(文字列先頭は「開始位置=0」です。範囲外を指定するとエラーになります。特定の文字列を見つけるにはstring(FIND)を使います。std::stringのfind()と同様な機能です。コマンドのフォーマットは以下の通りです。文字列の一部を置き換えるにはstring(REPLACE)を使います。std::stringのreplace()と似た機能ですが少し異なります。std::stringのreplace()は指定した文字列を直接書き換えますが、string(REPLACE)は入力文字列と出力文字列をそれぞれ指定します。複数の入力文字列を指定できます。コマンドのフォーマットは以下の通りです。(入力文字列は複数指定でき、それらを結合して処理します。Hello]2.そして応用CMakeのstringコマンドには、std::stringにはない応用的な機能があります。その中で比較的使いそうなものを解説します。正規表現による検索と置換CMakeは簡易版ですが、正規表現を使えます。正規表現の説明を始めると長くなりますので、ここでは省略します。以下のリンクを参考にして下さい。公式の正規表現のマニュアルはここです。正規表現」に概要の解説があります。一般の正規表現の入門解説が「サルにもわかる正規表現入門」にあります。(なお、CMakeの正規表現は簡易版ですが、概ねここに解説されているもので良さそうです。MATCH)指定の文字列から最初にマッチした文字列を返却します。コマンドのフォーマットは以下の通りです。(入力文字列は複数指定でき、それらを結合して処理します。MATCHALL)指定の文字列からマッチする全ての文字列をリストにして返却します。コマンドのフォーマットは以下の通りです。(入力文字列は複数指定でき、それらを結合して処理します。REPLACE)指定の文字列からマッチする全ての文字列を置き換えます。...にて取り出せます。コマンドのフォーマットは以下の通りです。(入力文字列は複数指定でき、それらを結合して処理します。サンプルyyyy/mm/dd形式の日付を検索したり、yyyy-mm-dd形式へ置換したりするサンプルです。それぞれの変数の内容で置き換えました。それぞれの変数の内容で置き換えます。コマンドのフォーマットは以下の通りです。(@ONLYとESCAPE_QUOTESオプションについては、当ブログのconfigre_fileで解説していますのでそちらを参考にして下さい。Stamp)string(TIMESTAMP)コマンドで現在の日時を(指定のフォーマットで)取り出せます。コマンドのフォーマットは以下の通りです。(UTCを指定すると世界標準時(UTC)で返ってきます。指定しないとローカル時間です。[UTC])書式文字列については簡単ですので上記公式の説明を参照下さい。15:4234]3.まとめstringコマンドは、基本的には普通の文字列操作コマンドですが応用的な機能もあります。今回は省略しましたがMD5やSHA-1ハッシュ計算やUUIDを計算する機能もあります。stringコマンド以外にもifコマンド等、様々なコマンドで使え、応用する機会もそこそこありそうです。スクリプト・モードでは結構使う機会の多いコマンドですが、Makefile生成モードでも時には使いますので、是非参考にされて下さい。それでは今回はこれで終わります。コメントをキャンセルメールアドレスが公開されることはありません。テクノロジーの登録商標です。technology.。