Avoid copying the icons, xslt and other dirs into themselves.

The install rule that qmake generates was of the form:
  -$(INSTALL_DIR) icons packaging/windows/icons

The first time you run make install, packaging/windows/icons doesn't
exist, so /usr/bin/install understands it as the name to be given to the
dir being installed. However, when you run make install a second time,
/usr/bin/install understands it as the target directory, so it copies
icons into the packaging/windows/icons dir.

We need to teach qmake not to add the dir name. Inspecting the source
code reveals:
    if(fi.isDir() && project->isActiveConfig("copy_dir_files")) {
        if(!dst_file.endsWith(Option::dir_sep))
            dst_file += Option::dir_sep;
        dst_file += fi.fileName();
    }

This option is enabled by default on all the win32-* targets.

So if we remove the "copy_dir_files" config, it won't append the source
name. The qmake manual says this about that option: "Enables the install
rule to also copy directories, not just files.", which doesn't help us
much. Probably just stale documentation.

Fixes #325

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Thiago Macieira 2013-12-05 15:34:09 -08:00 committed by Dirk Hohndel
parent fb169db292
commit 7881fb7edc

View file

@ -46,6 +46,7 @@ mac {
NSIINPUTFILE = $$PWD/$$WINDOWSSTAGING/subsurface.nsi.in
MAKENSIS = /usr/bin/makensis
CONFIG -= copy_dir_files
deploy.path = $$WINDOWSSTAGING
deploy.files += $$xslt.files $$doc.files $$icons.files
deploy.CONFIG += no_check_exist