本文主要是介绍QT项目pro文件检测PATH,兼论contains使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
想在qt的项目文件 pro 文件中设置环境变量PATH检测,以避免程序启动缺少相关的dll文件,便于项目备份迁移时候提醒。
可设置了 contains ,几乎不起作用。
官方说明:
contains(variablename, value)
Succeeds if the variable
variablename
contains the valuevalue
; otherwise fails. It is possible to specify a regular expression for parameter value.You can check the return value of this function using a scope.
For example:
contains( drivers, network ) {# drivers contains 'network'message( "Configuring for network build..." )HEADERS += network.hSOURCES += network.cpp }
The contents of the scope are only processed if the
drivers
variable contains the valuenetwork
. If this is the case, the appropriate files are added to the SOURCES and HEADERS variables.
这里其实是一个坑,这个contains不是包含network,而是包含某个item,一项是network。而每个项的分隔符是空格,所以范例中的network是一个字。如果drivers中包含 network-script,则contains(drivers,network)这个表达式结果是false。而环境变量 PATH的分割符是分号“;”,所以这个contains不能直接用。
修改如下:
通过split函数分割;的每个项目,这样处理结果传递给PATH变量,这样的变量能被contains处理,也支持每个小项中包含空格。
这样就通过了,如果PATH没有对应的MYLIB目录,编译生成停止。
后记Mac OS X
本来以为Mac OS X 下需要处理 DYLD_LIBRARY_PATH 变量。结果出乎意料
感觉 QT在构建和运行时候,环境是不一样的。
构建的时候
运行的环境变量
可以看到, pro 文件运行 qmake构建的时候,DYLD_LIBRARY_PATH是没有的。此时的检测DYLD_LIBRARY_PATH是没有意义的。而且好像无需另外的 .profile的bash中设置。构建时候会根据打开时候的pro文件,在lib里自动添加。
就是修改完毕pro文件后,最好退出QT Creator 一次。
这篇关于QT项目pro文件检测PATH,兼论contains使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!