Import 2017-06-07 23:51:09: master c087e5a1

Author Committer Branch Timestamp Parent
msmolens msmolens master 2015-10-16 16:58:25 master 2b116618
Changeset

BUG: Fix packaging on Windows

A regression was introduced in r24591 [1] and r24593 [2] that causes packaging
to fail on Windows because of the following errors:

CMake Error: Error in cmake code at
C:/D/N/Slicer-1-build/Slicer-build/CPackConfig.cmake:109:
Parse error.  Function missing ending ")".  Instead found unterminated string wi
th text ")
endif()

if(EXISTS ${CPACK_PROPERTIES_FILE})
  include(${CPACK_PROPERTIES_FILE})
endif()
".
CPack Error: Problem reading CPack config file: "C:/D/N/Slicer-1-build/Slicer-bu
ild/CPackConfig.cmake"

and

CMake Warning (dev) at C:/dev/SR2/Slicer-build/CPackConfig.cmake:74 (SET):
  Syntax error in cmake code at

    C:/dev/SR2/Slicer-build/CPackConfig.cmake:74

  when parsing string

    ..\Slicer;Slicer

  Invalid escape sequence \S

The issue is that the slicer_verbose_set() macro doesn't function as a drop-in
replacement for the CMake set() function.

The first error occurs because CPACK_NSIS_INSTALL_SUBDIRECTORY remains unset
even after the following lines:

set(Slicer_CPACK_NSIS_INSTALL_SUBDIRECTORY "")
slicer_cpack_set("CPACK_NSIS_INSTALL_SUBDIRECTORY")

and the conditional below erroneously evaluates to true:

if(NOT CPACK_NSIS_INSTALL_SUBDIRECTORY STREQUAL "")

Adding quotation marks around the ${ARGN} variable address this error.

The second error occurs because macros consume escapes in string literals, as
documented in CMake bug 5389 [3].

Change the macro to a function and making its set() call use PARENT_SCOPE
addresses this error.

[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24591
[2] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24593
[3] https://cmake.org/Bug/view.php?id=5389

Co-authored-by: Francois Budin <fbudin@email.unc.edu>

From: Max Smolens <max.smolens@kitware.com>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24627 3bd1e089-480b-0410-8dfb-8563597acbee

mod - CMake/SlicerCPack.cmake Diff File