如何将在Qt工程中建立子项目

如何将在Qt工程中建立子项目,第1张

一直纠结于Qt Creator很难在项目之间进行库引用。今天发现了子项目的概念,这么好用的功能竟然在qmake文档中轻描淡写的一笔带过。

先在Qt Creator中创建一个“子项目”工程,再在新建的项目中右键选择“新子项目”,然后就可以创建子项目了。这样就可以用树状的结构来组织管理项目了。

“Qt Creator是最好的C++ IDE,没有之一”这句话还是很有道理的。Visual Studio没有VA插件就是个记事本,Code::blocks配置非常繁琐,CodeLite智能提示不好。Qt Creator功能强大,qmake复制粘贴比VS鼠标点来点去省事,还支持VS编译器调试。Eclipse配置繁琐但智能提示挺好,Eclipse CDT是第二个选择。

按你的步骤来说,你只是把头文件和源文件copy到你工程目录下了,但是你并没有把你的头文件还有源文件加入你的.pro文件中 你需要在你的 pro 文件加入你的头文件和源文件。找到 HEADERS 关键字,在后面加上你的头文件。如果你的头文件名字是 xxx.h

首先是先新建一个子目录项目,再根据需要在子目录项目中添加一个应用程序项目以及多个库的项目,子目录项目默认就只有一个.pro文件。

从“#”开始,到这一行结束。

模板变量告诉qmake为这个应用程序生成哪种makefile。

指定编译器选项和项目配置,值由qmake内部识别并具有特殊意义。

以下配置值控制编译标志:

qmake添加这个变量的值作为编译器C预处理器宏(-D选项)。

指定编译项目时应该被搜索的#include目录。

指定程序编译时依赖的相关路径。

指定在何处放置目标文件。

指定目标文件的名称。默认情况下包含的项目文件的基本名称。

指定构建目录。

指定来自moc的所有中间文件放置的目录(含Q_OBJECT宏的头文件转换成标准.h文件的存放目录)。

指定所有中间文件.o(.obj)放置的目录。

指定Qt资源编译器输出文件的目录(.qrc文件转换成qrc_*.h文件的存放目录)。

指定链接到项目中的库列表。-L后是库文件的目录,-l后是具体的库的名字(后缀不用加)。例如:

LIBS += -L$$PWD/../../../ThirdLib/winapi -lWSock32

仅适用于Windows,指定的图标应该包含在一个生成的.rc文件里。如果RC_FILE 和RES_FILE变量都没有设置这才可利用。

指定包含用户界面翻译文本的翻译(.ts)文件列表。

为Windows平台加的依赖平台的文件的简单的作用域看起来就像这样:

win32 { SOURCES += hello_win.cpp }

每次添加一个子项目就会在SUBDIRS项目加上一个项目名,子目录项目的 TEMPLATE = subdirs 。 CONFIG += ordered 是让项目按照顺序编译,由于主程序依赖于对应的库,一般都是把MainApp放在SUBDIRS的最后。

对于一些库和主程序都需要的目录设置 (构建目录、obj生成目录、moc文件生成目录等),可以统一写在一个pri文件中:

在需要引用的pro文件中:

include($$PWD/../../../Path.pri)

message($$INCLUDEPATH) , 会在概要信息中打印相关变量的值

主程序的 TEMPLATE = app 。除了常规的pro设置外,要记得将自己编的库的头文件目录加上,并将生成的dll通过LIBS链接:

库的 TEMPLATE = lib 。库在通过Creator新建的时候会生成一个xxx_global.h,定义了导出库的相关信息:

在库中要作为接口的类记得加上对应的宏:

class TESTLIBSHARED_EXPORT TestLib : public QObject

静态库貌似不需要这个,待测试...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11729810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存