In Qt Creator, when I create a new Unit Test project it will not build successfully if the full path to the project contains a space.
I've tracked the bug down to the makefile produced by qmake. The makefile contains a line near the top like:
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\"
The quotes in the values for SRCDIR
and QT_TESTCASE_BUILDDIR
are escaped with backslashes. If I delete the backslashes from Makefile.Debug
, then the project will build successfully.
Obviously, I don't want to have manually delete the backslashes every time. I'd also like to avoid a custom build step that removes the backslashes. Because qmake has so many options, I was hoping there was something I could just put in the .pro
file that will fix this.
I tried something like DEFINES -= QT_TESTCASE_BUILDDIR
. That doesn't work however because QT_TESTCASE_BUILDDIR
is not yet defined. testlib
apparently adds its own definitions later.
I am using:
What's the simplest way to get rid of the backslashes?
Edit: This also happens OSX.
The definitions added by testlib
are in testlib_defines.prf
which is in:
C:\Qt\Qt5.0.2\5.0.2\msvc2010\mkspecs\features
Change...
DEFINES += QT_TESTCASE_BUILDDIR=\\\"$$OUT_PWD\\\"
...to...
DEFINES += QT_TESTCASE_BUILDDIR=\"$$OUT_PWD\"
The other part is easy. The extra backslashes for SRCDIR
come from the .pro
file itself. Change...
DEFINES += SRCDIR=\\\"$$PWD/\\\"
...to...
DEFINES += SRCDIR=\"$$PWD/\"
Every time you install a new version of Qt, you'll have to edit the .prf
file but that's better than having to edit the makefile every time qmake runs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With