📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「__FORCETOC__」を「{{#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 pag… |
|||
| (同じ利用者による、間の3版が非表示) | |||
| 4行目: | 4行目: | ||
== プリプロセッサの定義 == | == プリプロセッサの定義 == | ||
==== target_compile_definitionsコマンド (推奨) ==== | |||
特定のビルドタイプに基づいて、プリプロセッサ定義を設定することがよくある。<br> | 特定のビルドタイプに基づいて、プリプロセッサ定義を設定することがよくある。<br> | ||
<br> | <br> | ||
| 23行目: | 24行目: | ||
この機能を使用することにより、デバッグビルドとリリースビルドで異なるプリプロセッサマクロを簡単に管理できる。<br> | この機能を使用することにより、デバッグビルドとリリースビルドで異なるプリプロセッサマクロを簡単に管理できる。<br> | ||
* PUBLIC | * PUBLIC | ||
*: | *: ターゲット自身とそれをリンクするターゲットの両方に適用される。 | ||
* PRIVATE | |||
*: ターゲットのソースコードでのみ適用される。 | |||
* INTERFACE | * INTERFACE | ||
*: | *: ターゲットをリンクする他のターゲットにのみ適用される。 | ||
<br> | |||
==== add_definitionsコマンド (非推奨) ==== | |||
<code>add_definitions</code>コマンドの使用は避けるべきである。<br> | |||
<br> | |||
これは、以下に示すような問題があるからである。<br> | |||
* プロジェクト全体に影響を与えてしまう。 | |||
* ビルド依存性の管理が難しくなる。 | |||
* コンパイラの最適化を阻害する可能性がある。 | |||
<br> | |||
推奨されるコマンドは、<code>target_compile_definitions</code>コマンドである。<br> | |||
このコマンドは、ターゲット単位で定義を設定できるため、上記の問題を回避することができる。<br> | |||
<br><br> | <br><br> | ||
| 33行目: | 48行目: | ||
CMakeのバージョン比較機能と<code>target_compile_definitions</code>コマンドを組み合わせて使用する。<br> | CMakeのバージョン比較機能と<code>target_compile_definitions</code>コマンドを組み合わせて使用する。<br> | ||
<br> | <br> | ||
===== 推奨する方法 ===== | |||
# まず、プロジェクトのバージョンを定義する。 | |||
# 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。 | |||
<br> | |||
以下の例では、メジャーバージョンが0より大きい場合、または、メジャーバージョンが0でマイナーバージョンが2以上の場合に、処理を実行している。<br> | |||
これにより、将来のバージョンに対して柔軟にソースコードを記述することができる。<br> | |||
<syntaxhighlight lang="cmake"> | |||
project(MyProject VERSION 0.1.0) | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="cmake"> | |||
target_compile_definitions(MyProject PRIVATE | |||
-DMYPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} | |||
-DMYPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR} | |||
) | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
#if MYPROJECT_VERSION_MAJOR > 0 || (MYPROJECT_VERSION_MAJOR == 0 && MYPROJECT_VERSION_MINOR >= 2) | |||
// MyProject 0.2以降の処理を記述 | |||
#endif | |||
</syntaxhighlight> | |||
<br> | |||
===== 非推奨の方法 ===== | |||
# まず、プロジェクトのバージョンを定義する。 | # まず、プロジェクトのバージョンを定義する。 | ||
# 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。 | # 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。 | ||
| 61行目: | 100行目: | ||
#endif | #endif | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
<u>※注意</u><br> | |||
<u>ただし、この方法では新しいバージョンが追加されるごとにプリプロセッサを更新する必要がある。</u><br> | |||
<u>より柔軟な方法は、バージョン番号を個別の部分に分割することである。</u><br> | |||
<br><br> | <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__ | __FORCETOC__ | ||
[[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]] | [[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]] | ||