Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
5.0.0
-
None
-
7c34e0a7b48572be1f9e3fb45911a13b01798e37
Description
When the path to a file or dependency contains the : (colon) character, qmake creates an invalid Makefile. The problem is that : is a special character in Makefile rules and it needs to be escaped.
If either the file or the dependency contains a : character, this will not parse correctly.
Makefile: /home/me/foo:bar/baz # invalid /home/me/foo:bar/baz: something/else # invalid
qmake should be escaping : to create valid syntax.
Makefile: /home/me/foo\:bar/baz # valid /home/me/foo\:bar/baz: something/else # valid
This clearly doesn't affect Windows because : is not valid in paths on Windows but it is perfectly valid on Unix and OBS makes use of it.
It may be enough to patch the escapeFilePath method but I'm not sure of all the places where this is used.
QString UnixMakefileGenerator::escapeFilePath(const QString &path) const { QString ret = path; if(!ret.isEmpty()) { ret = unescapeFilePath(ret).replace(QLatin1Char(' '), QLatin1String("\\ ")).replace(QLatin1Char(':'), QLatin1String("\\:")); debug_msg(2, "EscapeFilePath: %s -> %s", path.toLatin1().constData(), ret.toLatin1().constData()); } return ret; }
Attachments
Issue Links
- is replaced by
-
QTBUG-3314 file name quoting is FUBAR
- Open
For Gerrit Dashboard: QTBUG-22863 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
231958,3 | qmake: escape colons and hashmarks in dependency paths | 5.11 | qt/qtbase | Status: MERGED | +2 | 0 |