diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index 86eca58f3..06313c71f 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -69,7 +69,7 @@ ENDIF(NOT CPACK_GENERATOR) # Set some other variables cpack_set_if_not_set(CPACK_BINARY_DIR "${CMAKE_BINARY_DIR}") cpack_set_if_not_set(CPACK_INSTALL_CMAKE_PROJECTS - "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME}") + "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/") cpack_set_if_not_set(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}") SET(_CPACK_UNUSED_VARIABLES_) diff --git a/Source/CPack/cmCPackGenericGenerator.cxx b/Source/CPack/cmCPackGenericGenerator.cxx index 7669c5f59..a26f1e256 100644 --- a/Source/CPack/cmCPackGenericGenerator.cxx +++ b/Source/CPack/cmCPackGenericGenerator.cxx @@ -252,9 +252,25 @@ int cmCPackGenericGenerator::InstallProject() it != cmakeProjectsVector.end(); ++it ) { + if ( it+1 == cmakeProjectsVector.end() || + it+2 == cmakeProjectsVector.end() || + it+3 == cmakeProjectsVector.end() ) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Not enough items on list: CPACK_INSTALL_CMAKE_PROJECTS. " + "CPACK_INSTALL_CMAKE_PROJECTS should hold quadruplet of install " + "directory, install project name, install component, and install " + "subdirectory." + << std::endl); + return 0; + } std::string installDirectory = it->c_str(); ++it; std::string installProjectName = it->c_str(); + ++it; + std::string installComponent = it->c_str(); + ++it; + std::string installSubDirectory = it->c_str(); std::string installFile = installDirectory + "/cmake_install.cmake"; const char* buildConfig = this->GetOption("CPACK_BUILD_CONFIG"); diff --git a/Templates/CPackConfig.cmake.in b/Templates/CPackConfig.cmake.in index 0f4ecd0f2..0406392a5 100644 --- a/Templates/CPackConfig.cmake.in +++ b/Templates/CPackConfig.cmake.in @@ -1,8 +1,11 @@ # This file will be configured to contain variables for CPack. These variables # should be set in the CMake list file of the project before CPack module is # included. Example variables are: -# CPACK_BINARY_DIR - Path to the build tree # CPACK_GENERATOR - Generator used to create package +# CPACK_INSTALL_CMAKE_PROJECTS - For each project (path, name, component) +# CPACK_CMAKE_GENERATOR - CMake Generator used for the projects +# CPACK_INSTALL_COMMANDS - Extra commands to install components +# CPACK_INSTALL_DIRECTORIES - Extra directories to install # CPACK_PACKAGE_DESCRIPTION_FILE - Description file for the package # CPACK_PACKAGE_DESCRIPTION_SUMMARY - Summary of the package # CPACK_PACKAGE_EXECUTABLES - List of pairs of executables and labels