「QMLの基礎 - ライブラリ」の版間の差分

ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == Qt Creatorにおいて、QMLを使用した静的ライブラリおよび動的ライブラリを作成して、他のQtプロジェクトにリンクする手順を記載する。<br> <br><br> == 動的ライブラリ == ==== 動的ライブラリの作成 ==== # QT Creatorのメイン画面から、[ファイル]メニューバー - [ファイル / プロジェクトの新規作成]を選択する。 # [新しいファイルまたはプロジェク…」)
 
113行目: 113行目:
# Qt Creatorのメイン画面左の[プロジェクト]ペインから、プロジェクト名を右クリックして、[既存のファイルの追加...]を選択する。
# Qt Creatorのメイン画面左の[プロジェクト]ペインから、プロジェクト名を右クリックして、[既存のファイルの追加...]を選択する。
# ファイル選択ダイアログから、動的ライブラリのヘッダファイルを選択する。<br>ヘッダファイルをインクルードすることにより、動的ライブラリの機能が使用できるようになる。
# ファイル選択ダイアログから、動的ライブラリのヘッダファイルを選択する。<br>ヘッダファイルをインクルードすることにより、動的ライブラリの機能が使用できるようになる。
# <u>ただし、動的ライブラリはQT Creatorから独立して実行されるため、実行ファイルと同じディレクトリに動的ライブラリを配置する必要がある。</u>
<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ファイル
  # ...略
  # ...略
   
   
  qt_add_executable(exeSample
  project(exeApp LANGUAGES CXX)
    src/main.cpp
    ../LibSample/LibSample.h
)
   
   
set(CMAKE_AUTOMOC ON)
 
  # ...略
  # ...略
   
   
  # ライブラリへのパスを指定
  # ライブラリへのパスを指定
  target_link_libraries(exeSample PRIVATE
  target_link_libraries(exeSample PRIVATE
     ${CMAKE_SOURCE_DIR}/../LibSample/${CMAKE_BUILD_TYPE}/libsample.so
     ${CMAKE_CURRENT_SOURCE_DIR}/../LibSample/${CMAKE_BUILD_TYPE}/libsample.so
  )
  )
   
   
  target_include_directories(exeSample PRIVATE
  target_include_directories(exeSample PRIVATE
     ${CMAKE_SOURCE_DIR}/../LibSample
     ${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>

案内メニュー