2013-05-17 61 views
4

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

我跟踪到了由qmake生成的makefile的bug。 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_BUILDDIR尚未定义。 testlib显然后来增加了自己的定义。

我使用:

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

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

编辑:这也发生在OSX。

回答

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。

+0

这可能很明显,但是一旦您更改了.prf文件,您将不得不再次为QtCreator运行qmake以查看更新后的QT_TESTCASE_BUILDDIR。 – BKewl