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