qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

------ 杭州 2024-03-10

code review!

文章目录

1.运行

2.文件结构

3.CMakeLists.txt

代码

cmake 复制代码
cmake_minimum_required(VERSION 3.5)

project(qt_cmake_widget 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(qt_cmake_widget SHARED
    main.cpp
    widget.cpp
    widget.h
    widget.ui
  )
else()
  add_executable(qt_cmake_widget
    main.cpp
    widget.cpp
    widget.h
    widget.ui
  )
endif()

target_link_libraries(qt_cmake_widget PRIVATE Qt5::Widgets)

4.main.cpp

cpp 复制代码
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

5.widget.h

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

6.widget.cpp

cpp 复制代码
#include "widget.h"
#include "./ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

7.widget.ui

cpp 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>
相关推荐
byte轻骑兵22 分钟前
【C++进阶】关联容器:pair类型
开发语言·c++
the_nov30 分钟前
11.多线程-信号量-线程池
linux·c++
LuckyRich134 分钟前
【boost搜索引擎】下
开发语言·c++·搜索引擎
对方正在长头发丿1 小时前
LETTERS(DFS)
c++·笔记·算法·深度优先·图论
追烽少年x1 小时前
在Qt中直接在构建目录下直接运行.exe文件报错问题分析
qt
能来帮帮蒟蒻吗1 小时前
GO语言学习(16)Gin后端框架
开发语言·笔记·学习·golang·gin
chushiyunen2 小时前
dom操作笔记、xml和document等
xml·java·笔记
chushiyunen2 小时前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat
汇能感知2 小时前
光谱相机的光谱数据采集原理
经验分享·笔记·科技
人人题3 小时前
汽车加气站操作工考试答题模板
笔记·职场和发展·微信小程序·汽车·创业创新·学习方法·业界资讯