替换函数 $$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\+\+"))
我有一个 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\+\+"))