QtCreater 主工程exe与次工程Dll的自动化编译

本文介绍了一种基于Qt的模块化开发方式,通过将主程序与动态链接库(DLL)分离来实现更好的团队协作和代码维护。具体步骤包括模块分割、DLL子工程设置及主程序工程配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模块分割
    为了方便模块化与团队开发管理,需要将工程进行切分,主思想是主exe分别调用各个dll,故需要进行工程分割

2.Dll子工程
    以下以Credit支付工程举例:
   Credit => include(文件夹)
                => credit.h
                => credit_global.h (Qt创建动态库时,自己使生的文件,也可以将它合并到credit.h里面去)
            => src (文件夹)     
                => credit_private.h    
                => credit_private.cpp    
           => lib(文件夹:dll与a文件的存放点)
           => Credit.pro 工程文件
 针对工程文件需要注意的地方,为了能区分出debug与release版本,这里加入以下的内容 :                     
CONFIG+=debug_and_release
CONFIG(debug, debug|release){
    TARGET = Creditd
} else {
    TARGET = Credit
}

为了能将dll与a文件的存放到上面的lib文件夹,工程文件加入以下内容:
# $$PWD/这个表示pro文件的目录,这里指定生成的.dll文件与.a文件的路径
DESTDIR = $$PWD/lib

这样,debug与release编译后,dll与a文件将自动放于lib文件夹下

3. exe程序的工程    
    这里为了方便,假设将Credit放于主程序MainCredit下,目录组成为    
    MainCredit => Credit  => include                                    
                                    => lib
                    => main.cpp
                    => MainCredit.pro    
    首先将Credit的库加入到 MainCredit.pro 工程中,使用QtCreater的右键-》添加库,先好lib文件夹下的库文件即可;
    这里要解决的问题是,每次Credit编译后,总是需要人工将lib里面的dll复制到 exe所在的文件夹内,很容易出错,这里抛砖引玉地说一下,暂时探到的方法,在MainCredit.pro加入以下内容, 编译链接时,将会把dll都复制到运行目录下:    

但这里发现,这QMake_POST_LINK并不是每次编译都会执行,这需要main.cpp这类的代码变化过,才会执行的,没想法好方法,这里取了个巧,在main.cpp里面加入了以下的代码:(PS:如果以后有好的方法,再修正了 >. <  ) 
    //运行程序时,就删掉main.o
    //让程序下一次编译时,执行pro里面的 QMAKE_POST_LINK 的内容,保证库文件一定时使用最新的
    //  by csq.Tom 2018/04/04
    {
        QString mainFile = QApplication::applicationDirPath()+"/main.o";
        QFile file(mainFile);
        if (file.exists())
        {
            file.remove();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值