Qt笔记-pro文件新增宏、if、else、编译后的shell命令写so或dll时提高开发效率
背景是这样的,目标是要写个dll,so,这种动态链接库,但如果直接写这玩意的话,调试起来很麻烦,需要用其他程序去加载他,特别是在linux上,没界面的那种,开发效率简直慢了不知道多少。就在想,能不能在Qt的pro文件中添加一些脚本,通过配置,就能编译出exe可执行程序或者so,dll这种动态链接库。
答案是可以的,思路如下:
①在pro中定义宏,当有这个宏时pro文件保护不同的.h和.cpp文件,从而指定makefile是生成exe还是dll;
②代码中通过pro中定义的宏,对Q_DECL_EXPORT和Q_DECL_IMPORT进行设置,设置到要导出的类上。
具体示例如下:
-
DEFINES = APP
-
#DEFINES = LIB
-
-
-
QT = core
-
QT -= gui
-
-
CONFIG = c 11
-
-
TARGET = XXXLib
-
CONFIG = console
-
CONFIG -= app_bundle
-
-
QMAKE_CXXFLAGS = -fpermissive
-
-
contains(DEFINES, APP){
-
-
SOURCES = main.cpp
-
-
TEMPLATE = app
-
QMAKE_POST_LINK = scp programName root@192.168.1.100:/root/bin
-
}
-
else{
-
-
TEMPLATE = lib
-
DEFINES = LIBXXX_LIBRARY
-
HEADERS = libXXX_global.h
-
}
-
-
-
SOURCES = ...... \
-
...... \
-
......
-
-
unix{
-
-
INCLUDEPATH = ...... \
-
...... \
-
......
-
-
LIBS = -L/XXXX/XXXX/XXXX/XXXX-lxxxx_lib -lxxxx_lib -lxxxx_lib
-
-
}
-
-
-
DEFINES = QT_DEPRECATED_WARNINGS
-
-
-
-
HEADERS = ...... \
-
...... \
-
...... \
-
......
稍微解释下:
①QMAKE_CXXFLAGS = -fpermissive:老项目,允许很多不安全的用法;
②DEFINES :进行宏定义;
③#:pro文件中“#”代表注释;
④TEMPLATE:指明这个程序是APP还是LIB库;
⑤QMAKE_POST_LINK:当链接结束后执行shell命令;
⑥scp programName root@192.168.1.100:/root/bin 将文件传到192.168.1.100的/root/bin目录下;
其中可以看到,为exe程序时,需要包含main.cpp文件,方便调试。
当为lib库时,需要包含libXXX_global.h,并且增加LIBXXX_LIBRARY这个宏定义。
下面来看下libXXX_global.h
Q_DECL_EXPORT这个宏代表需要生成动态库,LIBXXX_EXPORT相当于引用那个宏;
最后来看下关键的类,也就是导出的类,提供给三方用的。
-
-
-
-
-
-
-
-
-
-
-
class LIBXXX_EXPORT ClassTest{
-
-
public:
-
......
-
......
-
-
protected:
-
......
-
......
-
-
private:
-
......
-
......
-
};
-
-
-
从中LIBXXX_LIBRARY是在pro文件中定义的,当有时就加载libXXX_global.h,没有就说明是exe,就
#define LIBXXX_EXPORT
#define LIBXXX_EXPORT
定义为空,这样下面的ClassTest就是普通的类了。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghbjgg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13