Cmake qt_add_library

目录

基本用法

参数说明

示例

创建一个新的Qt项目

创建CMakeLists.txt

​​​​​创建库的源文件

创建主程序文件

构建项目


在Qt中,qt_add_library 是一个用于在CMake构建系统中添加库的命令。这个命令通常用于创建一个新的Qt库,并将其添加到CMake项目中。以下是如何使用 qt_add_library 的一些示例和详细步骤:

基本用法

qt_add_library(<library_name> [STATIC | SHARED | MODULE][EXCLUDE_FROM_ALL]source1 [source2 ...]
)

参数说明

  • <library_name>: 库的名称。
  • [STATIC | SHARED | MODULE]: 指定库的类型,默认为 STATIC,表示静态库。SHARED 表示动态库,MODULE 表示模块库。
  • [EXCLUDE_FROM_ALL]: 如果设置了这个选项,库不会被默认构建。
  • source1 [source2 ...]: 库的源文件列表。

示例

以下是一个简单的示例,展示如何在Qt项目中使用 qt_add_library

创建一个新的Qt项目

首先,确保你已经安装了Qt和CMake。然后,创建一个新的CMake项目目录

mkdir MyQtProject
cd MyQtProject

创建CMakeLists.txt

在项目目录中创建一个 CMakeLists.txt 文件,并添加以下内容:

cmake_minimum_required(VERSION 3.14)
project(MyQtProject LANGUAGES CXX)# 查找Qt包
find_package(Qt6 REQUIRED COMPONENTS Core Gui)# 添加库
qt_add_library(MyLibrary STATICmylibrary.cppmylibrary.h
)# 链接Qt库
target_link_libraries(MyLibrary PRIVATE Qt6::Core Qt6::Gui)# 添加可执行文件
add_executable(MyApp main.cpp)# 链接库和Qt库
target_link_libraries(MyApp PRIVATE MyLibrary Qt6::Core Qt6::Gui)

​​​​​创建库的源文件

在项目目录中创建库的源文件 mylibrary.h 和 mylibrary.cpp

// mylibrary.h
#ifndef MYLIBRARY_H
#define MYLIBRARY_H#include <QObject>class MyLibrary : public QObject
{Q_OBJECTpublic:MyLibrary();
};#endif // MYLIBRARY_H
// mylibrary.cpp
#include "mylibrary.h"MyLibrary::MyLibrary()
{
}

创建主程序文件

创建 main.cpp 文件

// main.cpp
#include <QCoreApplication>
#include "mylibrary.h"int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);MyLibrary lib;return a.exec();
}

构建项目

mkdir build
cd build
cmake ..
cmake --build .

这样,你就创建了一个包含自定义库的Qt项目,并成功构建了它。希望这些步骤能够帮助你在Qt项目中使用 qt_add_library。如果你有任何问题或需要进一步的帮助,请随时告诉我!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李彦宏:大模型公司要注重AI实际应用,写高考作文价值有限

李彦宏在2024世界人工智能大会上表示&#xff0c;大模型公司不应只关注写高考作文&#xff0c;而应更多地投入到实际应用中。这话说得有道理&#xff0c;不过我们也不能忽视探索性尝试的价值。接下来&#xff0c;我们来具体谈谈这个问题。 大模型在实际应用中的重要性 李彦宏…

性能测试:JMeter与Gatling的高级配置

性能测试是软件开发过程中不可或缺的一部分&#xff0c;它帮助我们确保应用在高负载下仍能保持良好的响应时间和稳定性。本文将深入探讨两种流行的性能测试工具&#xff1a;Apache JMeter和Gatling&#xff0c;并提供详细的高级配置指南以及Java代码示例。 Apache JMeter 高级…

uniapp小程序IOS端,uni.createInnerAudioContext()无声音

可能的问题 路径中有中文字符需要使用uni.getBackgroundAudioManager()播放其他问题 解决办法 首先我的路径中没有中文字符&#xff0c;如果有的&#xff0c;可能需要转义一下或者干脆不使用中文字符&#xff0c;第二个也是从其他博客中看到的&#xff0c;我这边分享一下我的…

【Qt】QTableView通过setColumnWidth设置了列宽无效

1. 解决 将模型设置给表格视图之后&#xff0c;再设置tableveiw的列宽。 2. 参考 https://blog.csdn.net/ml29895063/article/details/132716687

Feign远程调用,请求头丢失情况

现象 解决方案 import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolde…

编译开源车载Linux操作系统AGL

随着汽车行业的智能化和互联化趋势日益明显&#xff0c;车载系统作为汽车的重要组成部分&#xff0c;其性能和功能也受到了越来越多的关注。Linux作为一款开源的操作系统&#xff0c;具有稳定性高、安全性强、可定制性好等优点&#xff0c;因此成为了车载系统领域的热门选择。 …

我应该怎么办?(关于专升本篇!)

kimi&#xff0c;我需要你的帮助&#xff0c;我现在在湖北工业职业技术学院&#xff0c;我2025年将要开始进行专升本&#xff0c;预计在明年4月26日进行专升本&#xff0c;但是我现在很迷茫&#xff0c;自己感觉自己很懒惰&#xff0c;自己每天都过得很迷糊&#xff01; 面对专…

“unk0“ is not an ethernet device

nmap报错 Starting Nmap 7.94 ( https://nmap.org ) at 2024-07-05 14:47 中国标准时间 Only ethernet devices can be used for raw scans on Windows, and "unk0" is not an ethernet device. Use the --unprivileged option for this scan. QUITTING! 查看网卡…

SSM+汽车停车位共享APP-计算机毕业设计源码041534

摘 要 随着社会经济的快速发展,我国机动车保有量大幅增加,城市交通问题日益严重。为缓解用户停车难问题,本文设计并实现了APP停车位共享系统.该系统通过错峰停车达到车位利用率最大化.基于现状分析,本文结合实际停车问题,从系统应用流程,系统软硬件设计和系统实现三方面进行详细…

ffmpeg + opencv 把摄像头画面保存为mp4文件(Ubuntu24.04)

参考链接 ffmpeg opencv 把摄像头画面保存为mp4文件_ffmpeg转化摄像头mp4-CSDN博客 调试环境 Ubuntu24.04 ffmpeg 6.1.1 opencv 4.6 g 13.2.0 C源码 #include <iostream> #include <sys/time.h> #include <string>#ifdef __cplusplus extern "…

磁力天堂磁力链接搜索大全教程,如何使用磁力天堂。

磁力链接是一种特殊的下载链接&#xff0c;磁力链接可以理解为一个文件识别码&#xff0c;而并非具体的资源地址&#xff0c;下载软件需要拿着这个识别码去整个互联网(DHT网络)去寻找持有该资源的用户(节点)&#xff0c;如果找到则可以进行传输下载。一般年代越久远的磁力链接下…

MUNIK解读ISO26262--什么是系统安全分析

功能安全之系统阶段-系统安全分析 安全分析在ISO26262标准中横跨了多个阶段例如&#xff1a;概念阶段、系统架构阶段、硬件详设阶段和软件详设阶段&#xff0c;其中part5中的安全分析工具FMEDA是标准中唯一一个和ASIL等级挂钩的&#xff0c;在Part5中也用了很大篇幅在介绍该安…

Android系统开启Docker支持

Android系统开启Docker支持 1. 基础问题 1.1 为什么Android上不能直接使用Docker? 原因是docker依赖的Linux的内核特性&#xff0c;例如&#xff1a;cgroup、namespace等&#xff0c;在Android内核中默认没有开启。 1.2 如何在Android上开启docker支持&#xff1f; 需要修…

为什么英智智能宝能让律师工作事半功倍

大语言模型能够极大提高人们的知识理解能力和知识服务能力&#xff0c;法律服务是典型的知识服务领域&#xff0c;据悉律师有38%的任务都是重复性工作&#xff0c;这些任务有潜力被大模型替代。 但在法律行业中的高度专业且复杂的问题时&#xff0c;通用型大模型的回答虽能提供…

CentOS 离线安装部署 MySQL 8详细教程

1、简介 MySQL是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它基于SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;进行操作。MySQL最初由瑞典的MySQL AB公司开发&#xff0c;后来被Sun Microsystems公司…

Go 语言 Map(集合)

Go 语言 Map(集合) Map 是 Go 语言中一种非常重要的数据结构,它用于存储键值对。在 Go 中,Map 是一种无序的键值对的集合,其中每个键都是唯一的,而值则可以是任何类型。Map 是 Go 语言的内置类型,使用起来非常方便,同时也是许多 Go 程序中不可或缺的一部分。 Map 的声明…

电子元器件基础知识总结

1.0 电阻 电阻的定义&#xff1a;导体对电流的阻碍作用称之为电阻【每一种导体都有内阻的存在】 闭合的电路中电子的移动输出有多快&#xff1f;电子在导体中的移动速度是很慢的 【铜线中电流的移动速度】 电子受到原子核的束缚&#xff0c;移动的速度很慢&#xff0c;在电压足…

4面体空间5点结构种类与占比

在30个点的4面体中取5个点&#xff0c;有30*29*28*27*26/(5*4*3*2)142506种取法&#xff0c; 这里要求5个点必须是直链或支链。共有496个组合符合要求&#xff0c;按平移对称性可分成181个不同的结构 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 …

Linux 干货:新手村全攻略,老手也不容错过

以下是一篇详细的关于Linux系统的文章&#xff0c;涵盖了基础概念、常用命令、系统管理、网络配置、安全措施等多个方面&#xff0c;旨在提供全面的Linux知识。希望这些干货能对你有所帮助。 掌握Linux&#xff1a;从基础到进阶 Linux是一种开源的操作系统&#xff0c;广泛应用…

python3 imwrite 中文路径不成功解决方法

filename 中文路径 #cv2.imwrite(filename, frame) cv2.imencode(.jpg, frame)[1].tofile(filename)