VS管理多个QT项目

前言:

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

目录

前言:

 

1. 新建项目

 

2. 查看项目CameraTool

2.1 接口定义

2.1.1 CameraTool.h

2.1.2 cameratool_global.h

2.1.3 CAMERATOOL_LIB

2.1.4 __declspec()

2.2 项目执行文件

 

3. 建立依赖关系

3.1 添加引用

 3.2 附加头文件路径

 

4. 输出文件

 

5. 补充 

 

 

1. 新建项目

        原有项目解决方案如下:

c8179994da6f4d66b23409f994554ee3.png

         项目QtDemo1为创建解决方案时共同创建,也以此作为工程的入口,主项目。

        右键解决方案“QtDemo1”>>添加>>新建项目,在弹出的对话框选择“Qt Class Library”

5077144b885f47ffb6081ffcb4cfbaae.png

         下一步,创建新项目CameraTool,位置默认即可,与项目QtDemo1处在同一级目录下

64c99d064596457a9a6547ca48e5556d.png

         创建好新项目后,解决方案结构如下

8ab9b12e8f6d4dba933010fe611ef275.png

 

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++>>预处理器

0f874706370f44a7ad0414b93e8122cd.png

         项目已为我们添加了预处理器定义。

2.1.4 __declspec()

        源码中的定义:

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

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

2.2 项目执行文件

        右键项目CameraTool>>属性>>配置属性>>常规

ae8f9bbe8fda4702b7e5850cb9244e7f.png

        配置类型为动态库(dll文件),则运行会输出此项目的dll文件,供其他项目(QtDemo1)使用。

        同理,查看项目QtDemo1的配置类型:

e390958b187741159b54d1fe6e5fe260.png

        为常见的可执行文件(exe应用程序),在目录下双击运行即可执行已生成的项目。

        项目基本是构建成dll依赖库,供主项目调用。

 

3. 建立依赖关系

3.1 添加引用

        下拉项目QtDemo1>>右键引用>>添加引用>>项目>>解决方案

27fda358376d45eb9425b6893e592a27.png

        勾选CameraTool即可确定。

        这样在编译阶段,就会先处理CameraTool库,再编译QtDemo1。禁止互相引用,形成回路。

        在解决方案中也可设置所有项目的引用关系

        右键解决方案>>属性>>通用属性>>项目依赖项

808e797041a943bb88747273052421b0.png

 3.2 附加头文件路径

        右键项目QtDemo1>>属性>>配置属性>>C/C++>>常规

861fa361052d45b2894eb87c4fb545d9.png

         在“附加包含目录”中添加要引用项目CameraTool的头文件路径“..\CameraTool”,这里是相对路径,便于项目的移动。这里就给了#include "CameraTool.h"寻找头文件的路径。

c3ffaa8203ad405baefa5cceeb2f10a4.png

    其中 uic为QT特性,QT可构建图形界面文件(.ui),通过UIC编译器将ui文件编译为扩展C++头文件。编译的头文件便输出在此文件下。

    最后,别忘了在项目代码中加上#include。

 

4. 输出文件

9850cdfb576347d7829325dfa0960ce9.png

 

5. 补充 

        系统的去创建dll项目,省略了许多接口定义、预编译器、链接器上的操作。

VS有关附加库路径,预编译器,链接器等转载:vs2017 项目开发 解决方案下的多个项目_vs中一个解决方案下多个项目-CSDN博客

QT创建子项目转载:Qt Creator管理多个项目_csxiaoshui的博客-CSDN博客

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值