qmake在.pro文件中调用外部脚本或者exe
来源:互联网 发布:文艺青年生活知乎 编辑:程序博客网 时间:2024/06/05 19:07
在用qt编写程序的时候经常会用到依赖的库但是总是需要自己去拷贝就显得很麻烦,
下面我们来看看,在.pro文件中编写代码去执行一个拷贝依赖文件的脚本程序。
首先,我们在.pro文件里面加一下代码
defineReplace(win32Path) {#定义替换
win32:1 ~= s|/|\\\\|g
contains(1, ^\\.*):pfx = \\
else:pfx =
segs = $$split(1, \\)#字符串分割
out =
for(seg, segs) {
equals(seg, ..):out = $$member(out, 0) #文档中member函数是只有两个参数的,所以这个-2不清楚是做什么的
else:!equals(seg, .):out += $$seg
}
return($$join(out, \\, $$pfx))
}
win32 {
copydata.commands = $(COPY_FILE) $$win32Path("$$PWD/install.cmd") $$win32Path("$$PWD")
first.depends = $(first) copydata
export(first.depends)
export(copydata.commands)
QMAKE_EXTRA_TARGETS += first copydata#编译其他目标
CONFIG( debug, debug|release) {
QMAKE_POST_LINK += $$win32Path("$$PWD/install.cmd") release $$win32Path("$$PWD/../../")#编译qian执行
} else {
#QMAKE_POST_LINK += $$win32Path("$$OUT_PWD/install.cmd") release $$win32Path("$$PWD/../../")#编译qian执行
}
}
我想这应该不难看 懂。在config里面的那句代码就是执行当前路径下的install.cmd文件,看到没,.pro文件和install.cmd文件是在一个路径下的
我这个install.cmd里面写的是: echo a
@echo b
pause
很简单的两句命令。
接着我们去点击重新构建:我们在编译输出里面可以看到:我们cmd里面代码的执行结果:
是不是输出了a和b 呢,但是我们在cmd里面用了pause,所以编译也就卡住了,所以,我们在cmd里面可以写其他的代码
下面是我写的比较复杂的拷贝代码,shell脚本
QQ:609162385
以下是cmd文件
set CP_DRV=%~d0 #设置copy路径
set CP_PATH=%~dp0 #设置copy路径
if not exist "%2" goto SOURC_ERR #如果%2不存在则报错
set INSTALL_DIR=%CP_PATH%..\install
set INSTALL_DIR_INC=%INSTALL_DIR%\include
set INSTALL_DIR_LIB=%INSTALL_DIR%\lib
set INSTALL_DIR_INC_COMMON=%INSTALL_DIR%\include\common
if not exist %INSTALL_DIR% mkdir %INSTALL_DIR% #如果目录不存在则创建
if not exist %INSTALL_DIR_INC% mkdir %INSTALL_DIR_INC%
if not exist %INSTALL_DIR_INC_COMMON% mkdir %INSTALL_DIR_INC_COMMON%
if not exist %INSTALL_DIR_LIB% mkdir %INSTALL_DIR_LIB%
set SOURCE_DIR=%2
rem copy header, #如果文件存在,则拷贝进common路径下
if exist %SOURCE_DIR%\common\\$D{PROJ_NAME_LOWER}def.h copy %SOURCE_DIR%\common\\$D{PROJ_NAME_LOWER}def.h %INSTALL_DIR_INC_COMMON%\ /y
if exist %SOURCE_DIR%\common\\$D{PROJ_NAME_LOWER}diag.hxx copy %SOURCE_DIR%\common\\$D{PROJ_NAME_LOWER}diag.hxx %INSTALL_DIR_INC_COMMON%\ /y
if exist %SOURCE_DIR%\common\\$D{PROJ_NAME_LOWER}sys.hxx copy %SOURCE_DIR%\common\\$D{PROJ_NAME_LOWER}sys.hxx %INSTALL_DIR_INC_COMMON%\ /y
echo %INSTALL_DIR_LIB%
echo %SOURCE_DIR%
rem copy lib #快速复制库
set a=%1
echo %a%
if /i "%1" equ "debug" goto DEBUG #如果%1等于debug则跳转到debug
if /i "%1" equ "release" goto RELEASE
goto END
:DEBUG #如果文件存在,则拷贝进lib路径下
echo %CP_PATH%
if exist %CP_PATH%debug\ copy %CP_PATH%\debug\*.dll %INSTALL_DIR_LIB%\ /y
if exist %CP_PATH%debug\ copy %CP_PATH%\debug\*.pdb %INSTALL_DIR_LIB%\ /y
if exist %CP_PATH%debug\ copy %CP_PATH%\debug\*.lib %INSTALL_DIR_LIB%\ /y
goto END
:RELEASE
if exist %CP_PATH%release\ copy %CP_PATH%\release\*.dll %INSTALL_DIR_LIB%\ /y
if exist %CP_PATH%release\ copy %CP_PATH%\release\*.pdb %INSTALL_DIR_LIB%\ /y
if exist %CP_PATH%release\ copy %CP_PATH%\release\*.lib %INSTALL_DIR_LIB%\ /y
goto END
:SOURCE_ERR
echo error: the source dir is not specified.
:END
echo install exit.
- qmake在.pro文件中调用外部脚本或者exe
- 如何在asp.net中调用外部exe文件
- 在VC中调用exe文件或者批处理文件方法总结
- java中调用外部exe文件
- 在Matlab中调用外部的exe文件,并将Workspace 中的变量作为参数传递给exe文件
- 在VC程序中调用exe文件或者批处理文件方法总结
- 在VC程序中调用exe文件或者批处理文件的方法:
- fscommand调用外部EXE文件
- MFC调用外部EXE文件
- Java中调用外部的exe文件源代码
- 在window service中调用外部exe或.bat等
- 在window service中调用外部exe或.bat等
- Unity调用外部Shell脚本或exe
- qmake生成的pro文件中QT变量的说明
- qmake生成的pro文件中QT变量的说明
- 在C#中调用exe文件
- 在网页中调用.exe文件
- 在C#中调用exe文件。
- Mysql笔记之 数据类型
- myeclipse 配置myeclipse.ini内存 处理JVM问题
- php页面静态化
- 剑指offer 二维数组中的查找
- H.264句法和语法总结(十二)子宏块预测句法
- qmake在.pro文件中调用外部脚本或者exe
- Kd-Tree算法原理和开源实现代码
- RecyclerView+index索引实现仿微信通讯录
- jboss7开发配置指南
- 查看linux ssh服务信息及运行状态
- C语言中的LARGE_INTEGER
- log4j笔记
- Java正则表达式详解(Pattern类和Matcher类)
- Ubuntu16.04 升级内核至4.8