LoginSignup
8
7

More than 5 years have passed since last update.

リソース付きのQt5のプログラムをCMakeでコンパイルする方法

Last updated at Posted at 2015-06-30

Qtを使うとGUIをいい感じに作ることができるのですが,普段CMakeを使っている自分には,qmakeを使わないといけないのが面倒でした.最近,CMakeを使ってQtを含むプログラムをコンパイルできるということを知ったのと,Qtを使ったプログラムを作る用ができたのをきっかけに,学生向けに作ったプログラムをCMakeでコンパイルできるよう書き換えました.無事起動はしたのですが,アイコン類が表示できませんでした.Qtでは,アイコン類は,リソースとして*.qrcファイルにまとめて記述しているため,これをCMakeが触れるようにする設定が必要となります.以下,調査して実験した結果をまとめます.

参考にしたページ

プログラム

昔作った簡易ポリゴンビューワーです.Binary STLファイルのみ読み込み可能です.気がついたらqmakeファイルが消えていたので,これをCMakeでコンパイルできるようにします.

環境

  • Qt (5.4.1)
  • Eigen (3.2.4)
  • OpenGL (入っているもの)
  • CMake (3.2.2)
  • Macbook (OS: Yosemite)

コード

編集するのはCMakeLists.txtになります.

src/CMakeLists.txt
set(CMAKE_PREFIX_PATH /usr/local/opt/qt5/lib/cmake )
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets REQUIRED)
find_package(OpenGL)

QT5_ADD_RESOURCES(RESOURCES meshview.qrc)
include_directories (/usr/local/include/eigen3)

add_executable(meshview Camera.cpp
Camera.hpp
ChangeColorWidget.cpp
ChangeColorWidget.hpp
Color3f.hpp
ExporterCamera.cpp
ExporterCamera.hpp
ExporterMesh.cpp
ExporterMesh.hpp
GLWidget.cpp
GLWidget.hpp
ImporterCamera.cpp
ImporterCamera.hpp
ImporterMesh.cpp
ImporterMesh.hpp
Light.cpp
Light.hpp
MainWindow.cpp
MainWindow.hpp
Mesh.cpp
Mesh.hpp
Model.cpp
Model.hpp
MouseEvent.cpp
MouseEvent.hpp
MouseListener.cpp
MouseListener.hpp
Preference.cpp
Preference.hpp
View.cpp
View.hpp
VirtualTrackball.cpp
VirtualTrackball.hpp
main.cpp
${RESOURCES}
)

target_link_libraries(meshview ${OPENGL_LIBRARY} )
QT5_USE_MODULES(meshview Widgets OpenGL)

最初の数行と最後のQT_USE_MODULESは,QtをCMakeでコンパイルするときに必要な設定です.

ポイントは,QT_ADD_RESOURCESのようです.ここでリソースファイル(.qrc)を与えます.また,add_executableにもリソースファイルを同様に追加します.これで,CMakeでコンパイルできるようになります.

結果

ツールバーのアイコンが表示されていることが確認できます.ただし,プログラムのアイコンは表示されません.これをどうにかするのはパッと見難しそうです.

Macを使って確認したので,Windows等で使いたい場合は,includeやらlibraryのリンクをそれなりに設定する必要があります.

meshview.png

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7