问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VS管理多个QT项目

创作时间:
作者:
@小白创作中心

VS管理多个QT项目

引用
CSDN
1.
https://blog.csdn.net/qq_45922514/article/details/132918331

本文整理出“在VS2019的一个解决方案下管理多个QT项目,为一个工程,只有一个mani函数入口”的流程。纯VS多项目管理,与QtCreator构建的多项目管理后附转载链接。

前言:

本文整理出“在VS2019的一个解决方案下管理多个QT项目,为一个工程,只有一个mani函数入口”的流程。纯VS多项目管理,与QtCreator构建的多项目管理后附转载链接。

1. 新建项目

原有项目解决方案如下:
项目QtDemo1为创建解决方案时共同创建,也以此作为工程的入口,主项目。
右键解决方案“QtDemo1”>>添加>>新建项目,在弹出的对话框选择“Qt Class Library”

下一步,创建新项目CameraTool,位置默认即可,与项目QtDemo1处在同一级目录下
创建好新项目后,解决方案结构如下

2. 查看项目CameraTool

2.1 接口定义

2.1.1 CameraTool.h

其代码如下:

// CameraTool.h
#pragma once
#include "cameratool_global.h"
class CAMERATOOL_EXPORT CameraTool
{
public:
    CameraTool();
};

2.1.2 cameratool_global.h

CAMERATOOL_EXPORT在其中定义,代码如下:

// cameratool_global.h
#pragma once
#include <QtCore/qglobal.h>
#ifndef BUILD_STATIC
# if defined(CAMERATOOL_LIB)
#  define CAMERATOOL_EXPORT Q_DECL_EXPORT
# else
#  define CAMERATOOL_EXPORT Q_DECL_IMPORT
# endif
#else
# define CAMERATOOL_EXPORT
#endif

2.1.3 CAMERATOOL_LIB

右键项目CameraTool>>属性>>配置属性>>C/C++>>预处理器
项目已为我们添加了预处理器定义。

2.1.4 __declspec()

源码中的定义:

#  define Q_DECL_EXPORT __declspec(dllexport)
#  define Q_DECL_IMPORT __declspec(dllimport)  

以此对这个类进行接口说明,其他的项目才可以通过其动态库(.dll)调用这个类。

2.2 项目执行文件

右键项目CameraTool>>属性>>配置属性>>常规
配置类型为动态库(dll文件),则运行会输出此项目的dll文件,供其他项目(QtDemo1)使用。
同理,查看项目QtDemo1的配置类型:
为常见的可执行文件(exe应用程序),在目录下双击运行即可执行已生成的项目。
项目基本是构建成dll依赖库,供主项目调用。

3. 建立依赖关系

3.1 添加引用

下拉项目QtDemo1>>右键引用>>添加引用>>项目>>解决方案
勾选CameraTool即可确定。
这样在编译阶段,就会先处理CameraTool库,再编译QtDemo1。禁止互相引用,形成回路。
在解决方案中也可设置所有项目的引用关系
右键解决方案>>属性>>通用属性>>项目依赖项

3.2 附加头文件路径

右键项目QtDemo1>>属性>>配置属性>>C/C++>>常规
在“附加包含目录”中添加要引用项目CameraTool的头文件路径“..\CameraTool”,这里是相对路径,便于项目的移动。这里就给了#include "CameraTool.h"寻找头文件的路径。
其中 uic为QT特性,QT可构建图形界面文件(.ui),通过UIC编译器将ui文件编译为扩展C++头文件。编译的头文件便输出在此文件下。
最后,别忘了在项目代码中加上#include。

4. 输出文件

5. 补充

系统的去创建dll项目,省略了许多接口定义、预编译器、链接器上的操作。
VS有关附加库路径,预编译器,链接器等转载:vs2017 项目开发 解决方案下的多个项目_vs中一个解决方案下多个项目-CSDN博客
QT创建子项目转载:Qt Creator管理多个项目_csxiaoshui的博客-CSDN博客

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号