在 Qt Creator 中,当我创建一个新的单元测试项目时,如果项目的完整路径包含空格,它将无法成功构建。
我已经将错误追踪到 qmake 生成的 makefile。生成文件在顶部附近包含一行,例如:
DEFINES = -DUNICODE -DWIN32 -DSRCDIR=\"C:/Users/Smith/Qt Projects/Unit_Tests/\" -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_TESTLIB_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR=\"C:/Users/Smith/Qt Projects/Debug_Unit_Tests\"
SRCDIR
的值中的引号和 QT_TESTCASE_BUILDDIR
用反斜杠转义。如果我从 Makefile.Debug
中删除反斜杠,那么项目将成功构建。显然,我不想每次都手动删除反斜杠。我还想避免删除反斜杠的自定义构建步骤。因为 qmake 有很多选择,我希望可以在
.pro
中添加一些东西。将解决此问题的文件。我试过类似
DEFINES -= QT_TESTCASE_BUILDDIR
.但是这不起作用,因为 QT_TESTCASE_BUILDDIR
尚未定义。 testlib
显然后来添加了自己的定义。我在用:
摆脱反斜杠的最简单方法是什么?
编辑:这也会发生在 OSX。
最佳答案
由 testlib
添加的定义在 testlib_defines.prf
这是在:
C:\Qt\Qt5.0.2\5.0.2\msvc2010\mkspecs\features
改变...
DEFINES += QT_TESTCASE_BUILDDIR=\\\"$$OUT_PWD\\\"
...到...
DEFINES += QT_TESTCASE_BUILDDIR=\"$$OUT_PWD\"
另一部分很容易。
SRCDIR
的额外反斜杠来自 .pro
文件本身。改变...DEFINES += SRCDIR=\\\"$$PWD/\\\"
...到...
DEFINES += SRCDIR=\"$$PWD/\"
每次安装新版本的 Qt 时,都必须编辑
.prf
文件,但这比每次 qmake 运行时都必须编辑 makefile 更好。
关于Qt Creator 单元测试项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611108/