替换函数 $$find always returns nothing

Replace function $$find always returns nothing

我有一个 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*)).

我用message($$QMAKESPEC)检查了$$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

有接受字符串的 qmake 方法和接受变量的方法。

$$find($$QMAKESPEC, "msvc") 替换为 $$find(QMAKESPEC, "msvc")

测试我

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\+\+"))