12,788
回編集
(ページの作成:「== 概要 == Qt Creatorにおいて、QMLを使用した静的ライブラリおよび動的ライブラリを作成して、他のQtプロジェクトにリンクする手順を記載する。<br> <br><br> == 動的ライブラリ == ==== 動的ライブラリの作成 ==== # QT Creatorのメイン画面から、[ファイル]メニューバー - [ファイル / プロジェクトの新規作成]を選択する。 # [新しいファイルまたはプロジェク…」) |
|||
113行目: | 113行目: | ||
# Qt Creatorのメイン画面左の[プロジェクト]ペインから、プロジェクト名を右クリックして、[既存のファイルの追加...]を選択する。 | # Qt Creatorのメイン画面左の[プロジェクト]ペインから、プロジェクト名を右クリックして、[既存のファイルの追加...]を選択する。 | ||
# ファイル選択ダイアログから、動的ライブラリのヘッダファイルを選択する。<br>ヘッダファイルをインクルードすることにより、動的ライブラリの機能が使用できるようになる。 | # ファイル選択ダイアログから、動的ライブラリのヘッダファイルを選択する。<br>ヘッダファイルをインクルードすることにより、動的ライブラリの機能が使用できるようになる。 | ||
<br> | |||
<u>※注意</u><br> | |||
<u>ただし、動的ライブラリはQT Creatorから独立して実行されるため、以下に示す手順を行う必要がある。</u><br> | |||
* 動的ライブラリのパスを直接指定する場合 | |||
*: まず、CMakeLists.txtファイルにおいて、<code>target_link_libraries</code>コマンドを使用して、.soファイルのパスを指定する。 | |||
*: 次に、<code>target_include_directories</code>コマンドを使用して、動的ライブラリが定義されているヘッダファイルが存在するディレクトリのパスを指定する。 | |||
*: <br> | |||
* <code>find_package</code>コマンドを使用する場合 | |||
*: また、動的ライブラリに.pcファイルが存在する場合、<code>find_package</code>コマンドを使用してもよい。 | |||
*: <code>find_package</code>コマンドを使用する場合でも、 | |||
*: <code>target_include_directories</code>コマンド (変数${xxx_INCLUDE_DIRS})、および、<code>target_link_libraries</code>コマンド (変数${xxx_LIBRARIES})を使用する必要がある。 | |||
<syntaxhighlight lang="cmake"> | <syntaxhighlight lang="cmake"> | ||
# CMakeLists.txtファイル | |||
# ...略 | # ...略 | ||
project(exeApp LANGUAGES CXX) | |||
set(CMAKE_AUTOMOC ON) | |||
# ...略 | # ...略 | ||
# ライブラリへのパスを指定 | # ライブラリへのパスを指定 | ||
target_link_libraries(exeSample PRIVATE | target_link_libraries(exeSample PRIVATE | ||
${ | ${CMAKE_CURRENT_SOURCE_DIR}/../LibSample/${CMAKE_BUILD_TYPE}/libsample.so | ||
) | ) | ||
target_include_directories(exeSample PRIVATE | target_include_directories(exeSample PRIVATE | ||
${ | ${CMAKE_CURRENT_SOURCE_DIR}/../LibSample | ||
) | ) | ||
# ...略 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
172行目: | 185行目: | ||
return app.exec(); | return app.exec(); | ||
} | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="qml"> | |||
// main.qmlファイル | |||
import QtQuick | |||
import QtQuick.Window | |||
Window { | |||
width: 640 | |||
height: 480 | |||
visible: true | |||
title: qsTr("QML from Library") | |||
Text { | |||
anchors.centerIn: parent | |||
text: libSample.getQmlSource() | |||
wrapMode: Text.WordWrap | |||
} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |