[CMake] INSTALL has changed (Attn. CVS CMake Users!)

Brad King brad.king at kitware.com
Fri Mar 24 16:11:40 EST 2006


Hello, all:

In preparation for additional features I've had to make a change to the 
semantics of the recenlty added INSTALL command.  THE CHANGE IS NOT 
BACKWARDS COMPATIBLE.  Since the command has never been included in an 
official release I consider this acceptable.  I apologize to users of 
CVS CMake but you will have to change your code.  I've changed 
CMake_VERSION_PATCH from 4 to 5 during the same commit so you can 
support both versions until all your users get a newer CVS CMake.

The change adds a third target type to the TARGETS form of the INSTALL 
command.  Static libraries and import libraries are now considered 
"ARCHIVE" targets instead of "LIBRARY" targets.  This additional level 
of granularity is needed for upcoming features.  Anyone using a command 
such as

   INSTALL(TARGETS ...
     RUNTIME DESTINATION bin
     LIBRARY DESTINATION lib
   )

to install either a shared or static library should change the code to

   INSTALL(TARGETS ...
     RUNTIME DESTINATION bin
     LIBRARY DESTINATION lib
     ARCHIVE DESTINATION lib
   )

to make sure the static library and the import library part of a DLL are 
installed as they were previously.  Until this change is made in your 
code the following will occur.  In the case of a static library an error 
will be issued complaining that a static library target was specified 
but no ARCHIVE DESTINATION was given.  In the case of a DLL the import 
library previously installed in the LIBRARY DESTINATION will SILENTLY 
NOT BE INSTALLED.  There is no way to diagnose this case because in the 
new format the condition is viewed as the user specifying that the 
import library should not be installed.

Read the updated documentation of the INSTALL command for details.

-Brad


More information about the CMake mailing list