[CMake] [CPack] Empty package while using component with NSIS on Win64 platform.

Alexandre Fournier alexandre.fournier at zimmercas.com
Mon May 14 11:13:17 EDT 2012


The new example is working, I guess I did not have the latest one, that is good news to me.

I removed all absolute path from install command : 

INSTALL(TARGETS triage 
        RUNTIME 
        DESTINATION bin 
        COMPONENT triageApp)

I disabled the SET_DESTDIR and remove the command after the include(CPack) and decided to use directly CPACK_COMPONENT_... variable.

set(CPACK_COMPONENT_TRIAGEAPP_DISPLAY_NAME "blabla")
	
set(CPACK_COMPONENT_TRIAGEAPP_DESCRIPTION
        " blabla ")
        
set(CPACK_COMPONENT_TRIAGEAPP_GROUP "Applications")
	
set(CPACK_COMPONENT_GROUP_APPLICATIONS_EXPANDED ON)
set(CPACK_COMPONENT_GROUP_APPLICATIONS_DESCRIPTION
        " blabla ")
        
set(CPACK_ALL_INSTALL_TYPES Full Developer)
set(CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything")
set(CPACK_COMPONENT_SURGICALLANDMARKADJUSTMENTAPP_INSTALL_TYPES Developer Full)
set(CPACK_COMPONENT_TRIAGEAPP_INSTALL_TYPES Developer Full)

It does not create the package anymore and makes an error when trying to install the first component.  

CPack: Enable Verbose
CPack Verbose: Read CPack config file:
CPack Verbose: Read CPack configuration file: C:/projects/test3/release
/CPackConfig.cmake
CPack Verbose: Specified generator: NSIS
CPack Verbose: Test NSIS version: "C:/Program Files (x86)/NSIS/makensis.exe" /VE
RSION
CPack Verbose: Use generator: cmCPackNSISGenerator
CPack Verbose: For project: Project
CPack: Create package using NSIS
CPack Verbose: Read description file: C:/Program Files (x86)/CMake 2.8/share/cma
ke-2.8/Templates/CPack.GenericDescription.txt
CPack Verbose: [NSIS] requested component grouping = ONE_PER_GROUP
CPack Verbose: Remove toplevel directory: C:/projects/test3/release/_CP
ack_Packages/win64/NSIS
CPack: Install projects
CPack: - Install project: Project
CPack: -   Install component: triageApp
CPack Error: Error when generating package: Project

I compared the example with my files and it is mostly the samething except that INSTALL command are not in the same CMakeLists.txt file.  Could that be the root of the problem?

-----Original Message-----
From: Eric Noulard [mailto:eric.noulard at gmail.com] 
Sent: Monday, May 14, 2012 10:28 AM
To: Alexandre Fournier
Cc: cmake at cmake.org
Subject: Re: [CMake] [CPack] Empty package while using component with NSIS on Win64 platform.

2012/5/14 Alexandre Fournier <alexandre.fournier at zimmercas.com>:
> Hello,
>
>
>
> I am trying to create a package for our project.  The package contains 
> several components, one for each application.  I followed the 
> instruction from the book "Mastering CMake" and the package is created 
> but has no components.  Our solution runs entirely on CMake including 
> continuous integration with CTest and CDash.  The only thing which is 
> not working properly is the packaging of the software.
>

This one SHOULD NOT be set for a NSIS/WIndows package

> SET(CPACK_SET_DESTDIR ON)

in fact beginning with CMake 2.8.6 it is seldom useful to set CPACK_SET_DESTDIR to ON in any case.

> INSTALL(TARGETS Adjustment RUNTIME DESTINATION 
> ${BUILD_ROOT}/bin/install COMPONENT AdjustmentApp) INSTALL(TARGETS 
> triage RUNTIME DESTINATION ${BUILD_ROOT}/bin/install COMPONENT 
> triageApp)

if ${BUILD_ROOT} is an absolute path this won't work.

> I read on forum that setting CPACK_SET_DESTDIR  to ON could cause 
> problem but it does not change anything in my case.  Whether or not 
> this variable is on or off or using absolute or relative path is 
> always ending with an empty installer.

Trust me you don't want to set CPACK_SET_DESTDIR to ON.
In the same way "absolute DESTINATION install path" will NOT work on Windows.

> I even try to run the example from the cmake wiki : http://www.cmake.org/Wiki/File:ComponentExampleStart.zip.

Did you use the "Start" archive or did you use the "final":
http://www.cmake.org/Wiki/File:ComponentExample.zip

> The example is not working at all, NSIS got errors:

May be the example is not up to date, but using http://www.cmake.org/Wiki/File:ComponentExample.zip
I can build an NSIS installer using CMake 2.8.8 and NSIS 2.46.
(on Linux with some crosstools but concerning the generated  NSIS project and NSIS processing it looks just fine).

> I am using CMake 2.8.7, NSIS 2.46 and Windows 7 64 bit edition.
>
> Is there any incompatibility with the version of the software used?

Are you using some custom build of NSIS ?
Like 64 bits
http://public.kitware.com/Bug/view.php?id=13203
or svn trunk?
http://public.kitware.com/Bug/view.php?id=13202

if not it should work.

--
Erk
Le gouvernement représentatif n'est pas la démocratie -- http://www.le-message.org


More information about the CMake mailing list