Qt Creator单元测试项目

时间:2013-05-17 14:07:36

标签: qt unit-testing qt-creator qtestlib

在Qt Creator中,当我创建一个新的单元测试项目时,如果项目的完整路径包含空格,则无法成功构建。

我已经将错误跟踪到了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\"

SRCDIRQT_TESTCASE_BUILDDIR的值中的引号会使用反斜杠进行转义。如果我从Makefile.Debug删除反斜杠,那么项目将成功构建。

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

我试过像DEFINES -= QT_TESTCASE_BUILDDIR这样的东西。但这不起作用,因为尚未定义QT_TESTCASE_BUILDDIRtestlib显然会在以后添加自己的定义。

我正在使用:

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

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

编辑:这也发生在OSX上。

1 个答案:

答案 0 :(得分:8)

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要好。