我有一个QT项目文件(.pro),并希望添加一些编译器特定的标志。
不是为每个版本的MSVC输入if win32-msvc2013|win32-msvc2010|...
,我想我只能搜索子串“msvc”。
我做了一些研究并找到了find功能,这似乎是完美的工作。
为了测试这一点,我将message($$find($$QMAKESPEC, "*msvc*"))
添加到项目文件中。但是,无论$$QMAKESPEC
变量是否包含子字符串“msvc”,它始终打印为空白。我还尝试了message($$find($$QMAKESPEC, "msvc"))
,message($$find($$QMAKESPEC, msvc))
和message($$find($$QMAKESPEC, *msvc*))
。
我使用$$QMAKESPEC
检查了message($$QMAKESPEC)
的值,并打印了E:/Qt/5.4/msvc2013_64/mkspecs/win32-msvc2013
。
如何使用find函数检查QT项目文件中变量的子字符串?
Frank Osterfeld建议在评论中使用msvc { ... }
,效果很好!但是我觉得这个问题仍然有用,因为$$find
仍未按预期工作。
Qt Creator 3.3.2(开源) 基于Qt 5.4.1(MSVC 2010,32位)
建于2015年3月4日00:09:05
来自修订版3af3fe7ad3
答案 0 :(得分:1)
有一些qmake方法接受一个字符串,并且有一些方法采用变量。
将$$find($$QMAKESPEC, "msvc")
替换为$$find(QMAKESPEC, "msvc")
。
TESTME
message("Test me")
message($$QMAKESPEC)
# MSVC
message($$find($$QMAKESPEC, "msvc"))
message($$find(QMAKESPEC, "msvc"))
# linux
message($$find($$QMAKESPEC, "linux"))
message($$find(QMAKESPEC, "linux"))
# g++ does not work because it is a regular expression
message($$find($$QMAKESPEC, "g++"))
message($$find(QMAKESPEC, "g++"))
# g\+\+ does work
message($$find($$QMAKESPEC, "g\+\+"))
message($$find(QMAKESPEC, "g\+\+"))