在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\"
SRCDIR
和QT_TESTCASE_BUILDDIR
的值中的引号会使用反斜杠进行转义。如果我从Makefile.Debug
删除反斜杠,那么项目将成功构建。
显然,我不希望每次都手动删除反斜杠。我还想避免一个删除反斜杠的自定义构建步骤。因为qmake有很多选项,所以我希望有一些东西可以放在.pro
文件中来解决这个问题。
我试过像DEFINES -= QT_TESTCASE_BUILDDIR
这样的东西。但这不起作用,因为尚未定义QT_TESTCASE_BUILDDIR
。 testlib
显然会在以后添加自己的定义。
我正在使用:
摆脱反斜杠的最简单方法是什么?
编辑:这也发生在OSX上。
答案 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要好。