【发布时间】:2015-05-24 22:49:52
【问题描述】:
我有一个 QT 项目文件 (.pro),并想添加一些编译器特定的标志。
我认为我可以只搜索子字符串“msvc”,而不是为每个版本的 MSVC 输入 if win32-msvc2013|win32-msvc2010|...。
我做了一些研究,发现了 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 建议在 cmets 中使用 msvc { ... },效果很好!但是我觉得这个问题仍然有用,因为 $$find 仍然没有按预期工作。
版本信息
Qt Creator 3.3.2(开源) 基于 Qt 5.4.1 (MSVC 2010, 32 bit)
于 2015 年 3 月 4 日 00:09:05 构建
从修订版 3af3fe7ad3
【问题讨论】:
-
您是否在 .pro 文件中尝试过
msvc: something? -
@FrankOsterfeld 啊,很好用,谢谢 :) 虽然它没有解释为什么
$$find不起作用 -
您需要传递函数名称,而不是其内容(即 QMAKESPEC,而不是 $$QMAKESPEC)。不过,它可能不会达到您的预期。请参阅doc.qt.io/qt-5/qmake-function-reference.html 还要注意有 contains()。
-
@FrankOsterfeld 啊,成功了,谢谢。如果您将其写在答案中,我会接受
-
如果你关心平台而不是编译器,或者使用“win32: something”而不是 msvc。
标签: qt qt-creator qmake