座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Qt4のプロジェクトを CMakeLists.txt (Cmake) で作る

Qt4でCMakeを使ったプロジェクト作成を試してみた。

以下の記事を参考にした。

CMakeLists.txt の書き方

簡単にHello worldするところまで。

CMakeLists.txt の中身。適当にコメント入れた。

cmake_minimum_required(VERSION 2.8)
project(QtHelloWorld CXX)
#
# ソースファイルとヘッダファイル
#
set(QtHelloWorldSources main.cpp mainwindow.cpp)
set(QtHelloWorldHeaders mainwindow.h)
#
# 以下は必須
#
find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
qt4_wrap_cpp(QtHelloWorldHeadersMoc ${QtHelloWorldHeaders})
#
# 実行ファイルを作成し、Qtライブラリをリンクする
#
add_executable(helloworld ${QtHelloWorldSources} ${QtHelloWorldHeadersMoc})
target_link_libraries(helloworld ${QT_LIBRARIES})

ソースファイル (main.cpp, mainwindow.cpp, mainwindow.h) し、CMakeLists.txt と同じディレクトリに置く。

このプロジェクトをカレントディレクトリとして、Windows & Visual Studio 環境なら次 のコマンドを実行する。

% mkdir _build
% cd _build
% cmake -G "NMake Makefiles" ..
% nmake

Linux環境なら cmake... 以下を次のようにして実行。OpenSUSE 13.10で確認。MinGWも 同じコマンドで行けると思われる。

% cmake ..
% make

mocファイルの再生成が必要なときも、make/nmake実行時にうまくやってくれているっぽい。

QtCore, QtGUI以外のライブラリは別にリンクする必要がある

${QT_LIBRARIES} でQtのライブラリをリンクしているが、ここには QtCoreQtGUI しか含まれていないので、その他のライブラリを使う場合は別にリンクする必要 がある。

といっても QWebkit であれば、 QT_QTWEBKIT_LIBRARIES, QT_QTWEBKIT_INCLUDE_DIR のように用意されているCMake用 の変数を使えば良い。

# includeディレクトリを追加
include_directories(${QT_QTWEBKIT_INCLUDE_DIR})
# リンクするライブラリを追加
target_link_libraries(helloworld
    ${QT_LIBRARIES}
    ${QT_QTWEBKIT_LIBRARIES}
    )

Qt5 も

Qt5も概ね同じような手順で出来そうですが、試してません。

広告を非表示にする