Qt Creator单元测试项目

mjk*_*k99 4 qt unit-testing qt-creator qtestlib

在Qt Creator中,当我创建一个新的Unit Test项目时,如果项目的完整路径包含空格,它将无法成功构建.

我已经将错误跟踪到qmake生成的makefile.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\"
Run Code Online (Sandbox Code Playgroud)

SRCDIR和的值中的引号QT_TESTCASE_BUILDDIR用反斜杠转义.如果我从中删除反斜杠Makefile.Debug,那么项目将成功构建.

显然,我不希望每次都手动删除反斜杠.我还想避免一个删除反斜杠的自定义构建步骤.因为qmake有很多选项,所以我希望有一些东西可以放在.pro文件中来解决这个问题.

我试过类似的东西DEFINES -= QT_TESTCASE_BUILDDIR.然而,这不起作用,因为QT_TESTCASE_BUILDDIR尚未定义. testlib显然后来添加了自己的定义.

我在用:

  • Visual Studio 2010 SP 1
  • Qt 5.0.2
  • Qt Creator 2.7.0
  • Windows 7的

什么是摆脱反斜杠最简单的方法?

编辑:这也发生在OSX上.

mjk*_*k99 8

通过添加的定义testlibtestlib_defines.prf它是:

C:\Qt\Qt5.0.2\5.0.2\msvc2010\mkspecs\features
Run Code Online (Sandbox Code Playgroud)

更改...

DEFINES += QT_TESTCASE_BUILDDIR=\\\"$$OUT_PWD\\\"
Run Code Online (Sandbox Code Playgroud)

...至...

DEFINES += QT_TESTCASE_BUILDDIR=\"$$OUT_PWD\"
Run Code Online (Sandbox Code Playgroud)

另一部分很简单.额外的反斜杠SRCDIR来自.pro文件本身.更改...

DEFINES += SRCDIR=\\\"$$PWD/\\\"
Run Code Online (Sandbox Code Playgroud)

...至...

DEFINES += SRCDIR=\"$$PWD/\"
Run Code Online (Sandbox Code Playgroud)

每次安装新版本的Qt时,您都必须编辑该.prf文件,但这比每次运行qmake时编辑makefile要好.