📢 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版が非表示)
159行目: 159行目:
**: <br>
**: <br>
**: qt_add_resourcesコマンドは、特殊ターゲットの名前を指定された変数に格納する。
**: qt_add_resourcesコマンドは、特殊ターゲットの名前を指定された変数に格納する。
<br><br>
== バージョンレスコマンド ==
Qt 5.15以降、Qtモジュールはバージョンレスのコマンドも提供している。<br>
例えば、Qt5とQt6のどちらを使用していても、<code>qt_add_translation</code>コマンドを使用して、翻訳ファイルをコンパイルすることができる。<br>
<br>
最初の<code>find_package</code>コマンドの実行の前に、<code>QT_NO_CREATE_VERSIONLESS_FUNCTIONS</code>を設定して、バージョンレスコマンドの作成を防ぐ。<br>
<br>
<br>
* <code>QT_NO_CREATE_VERSIONLESS_FUNCTIONS</code>
==== qt_disable_unicode_definesコマンド ====
*: qt_で始まるコマンドを非表示にして、qt6_で始まるバージョン管理されたコマンドのみを残す。
Qt 6では、Qtモジュールに対してリンクするターゲットに対して、<code>UNICODE</code>と<code>_UNICODE</code>コンパイラ定義がデフォルトで有効化されている。<br>
<code>qt_disable_unicode_defines</code>コマンドを実行することにより、<code>UNICODE</code>と<code>_UNICODE</code>コンパイラ定義が自動的に設定されるのを防ぐことができる。<br>
<br>
<br>
このマクロを定義することで、Qtのバージョン付きのシンボルのみが使用されるようになる。<br>
このコマンドは、Qt 6 Coreコンポーネントで定義されている。 (Qt 6.2で導入された)<br>
これは、特にQtの異なるバージョンを混在させる場合や明示的にバージョン管理を行う場合に有用である。<br>
<br>
<br>
以下の例では、<code>find_package</code>コマンドの前に<code>set</code>コマンドで<code>QT_NO_CREATE_VERSIONLESS_FUNCTIONS</code>を<code>TRUE</code>に設定している。<br>
バージョンレスコマンドが無効の場合は、代わりに<code>qt6_disable_unicode_defines</code>コマンドを使用する。<br>
これにより、Qtのバージョンなしのシンボルが生成されないようになる。<br>
CMake 3.16以降が必要な場合があるため、<code>cmake_minimum_required</code>コマンドを適切に設定する必要がある。<br>
  <syntaxhighlight lang="cmake">
  <syntaxhighlight lang="cmake">
cmake_minimum_required(VERSION 3.16)
  find_package(Qt6 REQUIRED COMPONENTS Core)
# Set QT_NO_CREATE_VERSIONLESS_FUNCTIONS before calling find_package
set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS TRUE)
project(MyQtProject)
# 使用するQtライブラリ
  find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
# 実行ファイルのソースファイルおよびヘッダファイル
add_executable(MyApp main.cpp)
   
   
  # Qtライブラリのリンク
  qt_disable_unicode_defines(myApp)
target_link_libraries(MyApp Qt6::Core Qt6::Widgets)
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>


== バージョンレスターゲット ==
既存のインポートターゲットに加えて、Qt 5.15以降ではバージョンレスターゲットが使用できる。<br>
例えば、Qt Coreライブラリとリンクする場合、Qt6::CoreとQt::Coreの両方を参照することができる。<br>
<br>
バージョンレスターゲットはデフォルトで定義されている。<br>
バージョンレスターゲットを無効にする場合は、最初の<code>find_package</code>コマンドの実行前に、<code>QT_NO_CREATE_VERSIONLESS_TARGETS</code>を設定する必要がある。<br>
<br>
* <code>QT_NO_CREATE_VERSIONLESS_TARGETS</code>
*: Qt::で始まるインポートされたターゲットを隠す。
*: 代わりに、Qt6::で始まるターゲットを使用する必要がある。
<br>
以下の例では、まず、Qt6ライブラリを探索する。<br>
探索に失敗した場合は、Qt 5.15ライブラリを探索する。<br>
これにより、Qt 5 / 6に関係なく、インポートされたQt::Coreターゲットを使用することができる。<br>
<syntaxhighlight lang="cmake">
find_package(Qt6 COMPONENTS Core)
if (NOT Qt6_FOUND)
    find_package(Qt5 5.15 REQUIRED COMPONENTS Core)
endif()
add_executable(myApp
    # ...略
)
target_link_libraries(myApp PRIVATE Qt::Core)
</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__
__FORCETOC__
[[カテゴリ:Qt]]
[[カテゴリ:Qt]]