MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
CMake - 条件分岐のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
CMake - 条件分岐
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <code>if()</code>コマンドおよび<code>elseif()</code>コマンドの引数には、そのブロックを実行する条件式を記述する。<br> この条件式には、以下に示す種類がある。<br> <br> * ブール定数 *: CMakeの値は全て文字列型であるが、条件式では以下に示す値がBooleanとして認識される。 *: <u>これらの値は、大文字・小文字は区別されないことに注意する。</u> <br><br> == 真と解釈される値 == * 0でない数値 * ON * YES * TRUE * Y # 例 if(1) if(TRUE) if(on) if(Yes) <br><br> == 偽と解釈される値 == * 空文字列 * 0 * OFF * NO * FALSE * N * IGNORE * NOTFOUND * 末尾が<code>-NOTFOUND</code>である文字列 <br> # 例 if(0) if(FALSE) if(off) if(No) if(SamplePackage-NotFound) <br><br> == ブール演算子 == 論理積を表すAND、論理和を表すOR、否定を表すNOTが使用できる。<br> <u>これらは、全て大文字でなければならないことに注意する。</u> # 例 if(true AND true) if(true OR false) if(NOT false) <br><br> == 変数の確認 == 変数が定義済みかどうかの確認、および、数値の比較等を行うことができる。<br> # 例 if(DEFINED variable) if(1 LESS 2) <br> * 対象の存在の確認 *: 対象の存在を判定することができる。 # 例 if(DEFINED value) # value という変数がセットされているかどうか if(COMMAND message) # message というコマンドが存在するかどうか if(POLICY CMP0011) # CMP0011 というポリシーが存在するかどうか if(TARGET test) # test というターゲットが定義されているかどうか if(EXISTS src/a.cpp) # src/a.cpp というパスが存在しているかどうか <br> * 対象の性質の確認 *: 対象の性質を確認することができる。 # 例 if(IS_DIRECTORY src/) # src/ がディレクトリかどうか if(IS_SYMLINK /bin/sh) # /bin/sh がシンボリックリンクかどうか if(IS_ABSOLUTE /) # / が絶対パスかどうか <br><br> == 数値の比較 == * 数値の比較 *: 数値の比較することができる。 # 例 if(1 EQUAL 1) if(1 LESS 2) if(2 GREATER 1) <br><br> == 文字列の比較 == * 文字列の比較 *: 文字列を比較することができる。 *: 辞書順に基づく。 # 例 if("a" STREQUAL "a") # 文字列が同じ if("a" STRLESS "aa") # "a" < "aa" if("b" STRGREATER "a") # "b" > "a" <br> * 文字列のパターンマッチ *: <code><文字列> MATCHES <正規表現のパターン></code> *: 文字列正規表現のパターンにマッチするかどうかを確認することができる。 *: もし、文字列が空文字列、または、存在しない場合は、<code>false</code>を返す。 # 例 # 文字列がa(1文字以上)から始まり、aの次がbで終わる場合 if("aaaab" MATCHES "^a+b$") <br><br> == バージョンの比較 == バージョンのフォーマットは、<メジャー>[.<マイナー>[.<パッチ>[.<ビルド>]]]である。<br> <br> バージョンの比較では、以下に示すような特徴がある。<br> * 数値的な順序や辞書順には基づかない。<br>例えば、0.1という値と0.1.0.0という値は等しいと評価される。 * 1.19は、1.2より大きいと評価される。 <syntaxhighlight lang="cmake"> # 例 if(0.1 VERSION_EQUAL 0.1.0.0) # 0.1 == 0.1.0.0 if(0.1 VERSION_LESS 0.1.1) # 0.1 < 0.1.1 if(1.19 VERSION_GREATER 1.2) # 1.19 > 1.2 </syntaxhighlight> <br> ファイルのタイムスタンプを比較することができる。<br> * ファイル1とファイル2のタイムスタンプを比較することができる。 * ファイル1がファイル2より新しい場合、<code>true</code>を返す。 * <u>いずれかのファイルが存在しない場合も、<code>true</code>を返す。</u> <syntaxhighlight lang="cmake"> # 例 if(build/my_exe IS_NEWER_THAN /usr/local/bin/my_exe) </syntaxhighlight> <br><br> == その他の条件分岐 == ==== OSでの分岐 ==== Linuxのみビルドを可能にする場合は、条件分岐により現在のプラットフォームがLinuxであるかどうかを確認する。<br> <br> LinuxおよびMacOS以外のUNIX系OSは含まれないため、CMake変数<code>CMAKE_SYSTEM_NAME</code>を使用してより詳細な条件を設定することもできる。<br> <syntaxhighlight lang="cmake"> # OSの確認 if(UNIX AND NOT APPLE) # Linuxの場合 message("Linux detected. Proceeding with CMake configuration...") else() # Linux以外の場合 message(FATAL_ERROR "This project requires Linux to build.") endif() </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]]
CMake - 条件分岐
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse