1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QtのCMakeからWindouse向けのビルドまでの流れ

Posted at

まず、Qtをダウンロードします。

ここからダウンロードすれば、会社名などを入力する手間がないです。
そしたらインストーラーをお好みで進めてください。

srcフォルダーを作ったらその中身にソースコードを入れてください。

次はCMakeListsです。

CMakeLists.txt
cmake_minimum_required(VERSION 3.16)

list(APPEND CMAKE_PREFIX_PATH "C:/Qt/6.8.1/mingw_64/lib/cmake")

project(Philia VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
qt_standard_project_setup()

add_subdirectory(src)

target_link_libraries(Philia PRIVATE Qt6::Widgets)

set_target_properties(Philia PROPERTIES
    WIN32_EXECUTABLE ON
    MACOSX_BUNDLE ON
)

まず、CMAKE_PREFIX_PATHが必要です。
CMAKE_PREFIX_PATHは、qtのインストール先の
lib/cmakeです。
次にパッケージを探します。
find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
Coreは必須です。
次にqt_standard_project_setup()
を実行します。
最後にtarget_link_libraries(Philia PRIVATE Qt6::Widgets)を追加します。

次にbatファイルを作ります。

build_win.bat
set QT_PATH=C:/Qt/6.8.1/mingw_64
set QT_TOOL_PATH=C:/Qt/Tools
%QT_TOOL_PATH%\CMake_64\bin\cmake.exe . -G "Ninja" -B Build  "-DQT_QMAKE_EXECUTABLE:FILEPATH=%QT_PATH%/bin/qmake.exe" "-DCMAKE_PREFIX_PATH:FILEPATH=%QT_PATH%/mingw_64" "-DCMAKE_C_COMPILER:FILEPATH=C:/Qt/Tools/mingw1310_64/bin/gcc.exe" "-DCMAKE_CXX_COMPILER:FILEPATH=%QT_TOOL_PATH%/mingw1310_64/bin/g++.exe" "-DCMAKE_GENERATOR:STRING=Ninja"
cd Build
ninja
%QT_PATH%/bin/windeployqt.exe .
pause

こんな感じで作ります。
ここはもうコピペでも良いです。
ここの、QT_PATHQT_TOOL_PATHは、各自のパスにすればよいです。

流れを説明すると、Qt内のcmakeをNinjaで行うようにし、Buildフォルダー内に中身を入れるようにしています。その後に、Qt独自のフラグを設定しています。
その後、Buildフォルダーに行きninjaを直接実行し、windeployqt.exeをしようしてdll類をコピーしています。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?