Qt Creator:CMakeプロジェクトをビルドします(続き)

公式文書

cmake vs qmake

  • qmakeはQtに合わせて調整されており、非常に便利に使用できます
  • cmakeは、使用中のqmakeほど単純で直接的なものではありませんが、強力な機能と引き換えに複雑です。
    • 組み込みのアウトオブソースビルド。(現在、QtCreatorはqmakeに対してデフォルトでこの機能も有効にしています。参照:qmakeのシャドウビルドについて話します
    • さまざまなプラットフォームとシナリオに条件付きコンパイルを提供する
    • 複数の実行可能ファイルを処理でき、QtTestでうまく機能します

選び方は?

  • 単純なQtプロジェクトの場合は、qmakeを使用します
  • 複雑さがqmakeの処理能力を超える場合は、cmakeを使用してください

使用する

準備ができました

QtCreatorでCMakeを設定する
ここに画像の説明を挿入します

qtプロジェクトを作成する

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

実行して、
ここに画像の説明を挿入します
CMakeLists.txtのコンテンツを確認してください。

cmake_minimum_required(VERSION 3.5)

project(cmake_test LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.

#if(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            ${
    
    CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
#            ${
    
    CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
#    endif()
#endif()

find_package(Qt5 COMPONENTS Widgets REQUIRED)

if(ANDROID)
  add_library(cmake_test SHARED
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
else()
  add_executable(cmake_test
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
endif()

target_link_libraries(cmake_test PRIVATE Qt5::Widgets)

https://doc.qt.io/qt-5/cmake-get-started.html#build-a-gui-executable
https://doc.qt.io/qt-5.9/cmake-manual.html
https: //doc.qt.io/qtcreator/creator-project-cmake.html
https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html

おすすめ

転載: blog.csdn.net/zhizhengguan/article/details/112861360