Qt .pro文件之defineReplace函数的用法,实现lib文件名自动添加后缀"d"

Iria ·
更新时间:2024-09-20
· 859 次阅读

本篇讲解在Qt的.pro文件使用defineReplace函数。

1、先看官网的说明文档

https://doc.qt.io/qt-5/qmake-language.html#replace-functions

1.1 语法
使用defineReplace函数定义func函数

defineReplace(func) 
{
}


1.2 func传参

$$func(11, 22, 33)


1.3 函数返回值
无论是返回什么值都需要括号。可以忽略不写。

return (Hello world!)

1.4 func捕获参数(1到N)

defineReplace(func) 
{

ARG1 = $$1

ARG2 = $$2

ARG3 = $$3
}

2、举例说明

2.1 新建一个公共的pri文件,想让debug生成的库文件名后缀+d,可以通过defineReplace函数来实现:

common.pri

defineReplace(qtLibraryName) { unset(LIBRARY_NAME) LIBRARY_NAME = $$1 CONFIG(debug, debug|release) { !debug_and_release|build_pass { mac:RET = $$member(LIBRARY_NAME, 0)_debug else:win32:RET = $$member(LIBRARY_NAME, 0)d } } isEmpty(RET):RET = $$LIBRARY_NAME return($$RET) } #指定生成的临时文件放置的目录 MOC_DIR = temp/moc RCC_DIR = temp/rcc UI_DIR = temp/ui OBJECTS_DIR = temp/obj #指定生成的应用程序放置的目录 win32:CONFIG(debug, debug|release){ contains(DEFINES, WIN64) { DESTDIR = ../_debug64 } else { DESTDIR = ../_debug32 } } else:win32:CONFIG(release, debug|release){ contains(DEFINES, WIN64) { DESTDIR = ../_release64 } else { DESTDIR = ../_release32 } }

2.2 新建一个动态库项目,pro文件这样写:

include(../common.pri) QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TEMPLATE = lib TARGET = $$qtLibraryName(ribbonTabbar)

如此一来,debug生成的lib文件名就是ribbonTabbard.lib和ribbonTabbard.dll,自动添加了后缀"d"

2.3 最后新建一个exe主程序项目,想引入该动态库的话,可以在pro文件这样写:

include(../common.pri) IDE_LIBRARY_PATH = $${DESTDIR} LIBS += -L$${IDE_LIBRARY_PATH} LIBS *= -l$$qtLibraryName(ribbonTabbar) LIBS *= 和LIBS += 是同样的意思。 -L表示后面跟的是一个文件夹,工程会将这个目录加入库文件搜索路径中。  -l表示后面跟的是一个库文件的名字。不论后缀是.lib、.dll、.so、.a,都不需要加上后缀名,直接用库的点分号前面部分名字即可。
作者:libaineu2004



自动 pro lib lib文件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章
Lala 2021-06-25
536