qt
1.控制台程序
1.src/main.cpp
1 2 3 4 5 6 7 8 9 10
| #include <QCoreApplication>
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug("hello,world\n"); qDebug() << "hi:" << "see you"; return a.exec(); }
|
2.CMakeLists.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| cmake_minimum_required(VERSION 3.24.0)
project(MyQtApp VERSION 0.1 LANGUAGES CXX)
option(USE_STATIC_QT "是否使用静态Qt" OFF)
if(USE_STATIC_QT) else() endif()
find_package(Qt6 REQUIRED COMPONENTS Core)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True)
set(SOURCE src/main.cpp) add_executable(${PROJECT_NAME} ${SOURCE})
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core )
|
3.CMakePresets.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| { "version": 3, "configurePresets": [ { "name": "base", "hidden": true, "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", "cacheVariables": { "CMAKE_EXPORT_COMPILE_COMMANDS": "YES" } }, { "name": "qt-static-release", "displayName": "Qt 6.2.4 MSVC Static Release", "inherits": "base",
"architecture": { "value": "x64", "strategy": "external" }, "toolset": { "value": "host=x64", "strategy": "external" }, "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "CMAKE_C_COMPILER": "cl.exe", "CMAKE_CXX_COMPILER": "cl.exe", "CMAKE_PREFIX_PATH": "C:/D/Program/Qt/6.2.4/MSVC2022_x64_static_624_Release", "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded" }, "vendor": { "jetbrains.com/clion": { "toolchain": "MSVC" } } }, { "name": "qt-mingw-dynamic", "displayName": "Qt 6.9.0 MinGW Dynamic", "inherits": "base", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_PREFIX_PATH": "C:/D/Program/Qt/6.9.0/mingw_64", "CMAKE_C_COMPILER": "gcc.exe", "CMAKE_CXX_COMPILER": "g++.exe" }, "vendor": { "jetbrains.com/clion": { "toolchain": "Qt_Mingw" } } } ], "buildPresets": [ { "name": "qt-debug", "configurePreset": "qt-mingw-dynamic" }, { "name": "qt-release", "configurePreset": "qt-static-release" } ] }
|
4.windows下使用mingw动态库编译
编译脚本build_debug.bat
1 2 3 4 5 6 7 8
| @echo off :: 1. 自动挂载 mingw 环境 call "C:\D\Program\Qt\6.9.0\mingw_64\bin\qtenv2.bat" :: 2. 运行 CMake Preset cmake --preset=qt-mingw-dynamic :: 3. 运行构建 cmake --build --preset=qt-mingw-dynamic -j8 pause
|
5.windows下使用msvc静态库编译
编译脚本build_realse.bat
1 2 3 4 5 6 7 8
| @echo off :: 1. 自动挂载 MSVC 环境 call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 :: 2. 运行 CMake Preset cmake --preset=qt-static-release :: 3. 运行构建 cmake --build --preset=qt-static-release -j8 pause
|
6.clion中使用
在ToolChain中添加两个脚本与选择编译器
1 2 3 4 5 6 7
| C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
C:\D\Program\Qt\6.9.0\mingw_64\bin\qtenv2.bat
|
MSVC编译需在CMakePresets.json中启用Qt_MSVC
1 2 3 4 5
| "vendor": { "jetbrains.com/clion": { "toolchain": "MSVC" } }
|