qmake编译dll

qmake不仅用于Qt,还能简化NativeCode的编译过程,避免手动编辑makefile和配置复杂选项。通过在mstndevvars.bat中添加qmake路径,环境即可支持qmake。创建mypri.pri文件存储常用设置,并在pro文件中引用,使用qmake -t vclib创建VC库工程,然后运行nmake -a即可生成DLL。此外,也可用qmake -t vcapp创建生成.exe的工程,或者通过mke文件调用nmake生成DLL。

qmake是Qt的make工具,但不仅仅用于Qt,看用在很多方面。比如编译NativeCode的时候。

mdl是靠手工编辑make文件,如果借助VC的话,要配置很多选项和配置很多输入库和头文件搜索路径等,麻烦的很。

有了qmake,这一切都解决了。

在mstndevvars.bat中增加一行:

CALL D:/qt4.4.3/bin/qtvars.bat

则当前的环境即可以调用bmake也可以调用qmake.

下面是我的方式,也可能有更好的

首先,建立一个mypri.pri文件,包含常用的设置,存储到qt的include目录下.

########################
# for qmake (2.01a) 
########################

MDLSDK_DIR = $$(mdltools)mdl\\

MSPLANTSDK_DIR=J:\MDL_Study\SDKs\platformsdk\v81107448\\

BOOSTSDK_DIR = D:\\boost_1_42_0


TEMPLATE=lib
DEFINES += winNT
TARGET = 

INCLUDEPATH += "${BOOSTSDK_DIR}" \
"$${MDLSDK_DIR}include" \
"$${MDLSDK_DIR}MicroStationAPI" \
"$${MDLSDK_DIR}MicroStationAPI\\interface" \
"$${MDLSDK_DIR}MicroStationAPI\\dgnfile" \
"$${MSPLANTSDK_DIR}bsiinc"

CONFIG(debug, debug|release) {
LIBS += -L"$${MDLSDK_DIR}library" -lmdlQtD
} else {
LIBS += -L"$${MDLSDK_DIR}li
QMakeQt框架中用于配置和生成项目的工具,它通过.pro文件来描述项目结构和编译选项。要在QMake项目中将生成的DLL(动态链接库)和.lib(静态链接库)分开存放,你需要在项目文件(.pro)中进行适当的设置。 首先,确保你的.pro文件中有正确的配置来生成库文件。对于DLL,通常你需要设置`TARGET`和`TEMPLATE`变量,同时可能需要使用`CONFIG`变量来指定生成库的类型。以下是一些基本的设置: ```pro # 设置项目名称 TARGET = mylibrary # 设置项目模板为静态库或动态库 TEMPLATE = lib # 设置生成DLL或静态库 CONFIG += dll # 如果需要生成DLL库 # CONFIG += staticlib # 如果需要生成静态库,取消上面的dll配置行,启用这一行 # 设置输出目录,区分DLL和LIB的存放路径 DESTDIR = $$OUT_PWD释放路径 ``` 对于分割存放DLL和LIB,你需要在.pro文件中进一步定义规则来控制输出文件的位置。这可以通过设置`QMAKE_POST_LINK`指令来实现,它在链接过程之后执行,可以用来移动生成的文件。例如: ```pro # 在链接后执行的脚本 QMAKE_POST_LINK += $$QMAKE_SUBstitutions.commands($$OUT_PWD释放路径/mylibrary.dll, $$OUT_PWD) QMAKE_POST_LINK += $$QMAKE_SUBstitutions.commands($$OUT_PWD释放路径/mylibrary.lib, $$OUT_PWD) # 如果需要在不同的目录存放DLL和LIB,可以使用以下命令 QMAKE_POST_LINK += $$QMAKE_SUBstitutions.commands($$OUT_PWD释放路径/mylibrary.dll, $$OUT_PWD/dll目录) QMAKE_POST_LINK += $$QMAKE_SUBstitutions.commands($$OUT_PWD释放路径/mylibrary.lib, $$OUT_PWD/lib目录) ``` 请注意,`$$QMAKE_SUBstitutions.commands()`函数用于执行特定的shell命令,用于移动文件。这里的`$$OUT_PWD`是一个预定义变量,表示编译输出的目录。你需要替换`释放路径`、`dll目录`和`lib目录`为实际的路径。 最后,不要忘记在.pro文件中指定你的源文件和头文件路径,以及其他编译和链接选项。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值