summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2007-11-07 13:11:58 -0500
committerBill Hoffman <bill.hoffman@kitware.com>2007-11-07 13:11:58 -0500
commit87c22309b844176df1250f37ecef418b6856ddd6 (patch)
tree51046edc7411a3d5a8ce62a92f6f9f6d758dbbab
parentc05f8aa70ed5837b75211483bddd9ae27012cd12 (diff)
downloadcmake-87c22309b844176df1250f37ecef418b6856ddd6.tar.gz
ENH: change CPACK_CREATE_DESKTOP_LINKS to something that can handle spaces in the name of the exectuable
-rw-r--r--CMakeCPack.cmake5
-rw-r--r--CMakeCPackOptions.cmake.in2
-rw-r--r--Source/CPack/cmCPackNSISGenerator.cxx34
3 files changed, 35 insertions, 6 deletions
diff --git a/CMakeCPack.cmake b/CMakeCPack.cmake
index f511895d35..24eb061d27 100644
--- a/CMakeCPack.cmake
+++ b/CMakeCPack.cmake
@@ -2,7 +2,10 @@
IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
IF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake")
SET(CMAKE_INSTALL_MFC_LIBRARIES 1)
- INCLUDE(InstallRequiredSystemLibraries)
+ OPTION(CMAKE_INSTALL_DEBUG_LIBRARIES
+ "Install Microsoft runtime debug libraries with CMake." FALSE)
+ MARK_AS_ADVANCED(CMAKE_INSTALL_DEBUG_LIBRARIES)
+ INCLUDE(${CMake_SOURCE_DIR}/Modules/InstallRequiredSystemLibraries.cmake)
ENDIF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake")
CONFIGURE_FILE("${CMake_SOURCE_DIR}/CMakeCPackOptions.cmake.in"
"${CMake_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
diff --git a/CMakeCPackOptions.cmake.in b/CMakeCPackOptions.cmake.in
index f1be2e87ed..9175a5e974 100644
--- a/CMakeCPackOptions.cmake.in
+++ b/CMakeCPackOptions.cmake.in
@@ -20,7 +20,7 @@ if(CPACK_GENERATOR MATCHES "NSIS")
# tell cpack the executables you want in the start menu as links
SET(CPACK_PACKAGE_EXECUTABLES "CMakeSetup" "CMake" )
# tell cpack to create a desktop link to CMakeSetup
- SET(CPACK_CREATE_DESKTOP_LINK_CMakeSetup ON)
+ SET(CPACK_CREATE_DESKTOP_LINKS "CMakeSetup")
SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\CMakeSetup.exe")
SET(CPACK_NSIS_DISPLAY_NAME "@CPACK_PACKAGE_INSTALL_DIRECTORY@ a cross-platform, open-source build system")
SET(CPACK_NSIS_HELP_LINK "http:\\\\www.cmake.org")
diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
index 953b367192..2e794f0b55 100644
--- a/Source/CPack/cmCPackNSISGenerator.cxx
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
@@ -228,10 +228,34 @@ int cmCPackNSISGenerator::InitializeInternal()
<< nsisVersion << std::endl);
return 0;
}
-
this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", nsisPath.c_str());
const char* cpackPackageExecutables
= this->GetOption("CPACK_PACKAGE_EXECUTABLES");
+ const char* cpackPackageDeskTopLinks
+ = this->GetOption("CPACK_CREATE_DESKTOP_LINKS");
+ std::vector<std::string> cpackPackageDesktopLinksVector;
+ if(cpackPackageDeskTopLinks)
+ {
+ cmCPackLogger(cmCPackLog::LOG_DEBUG, "CPACK_CREATE_DESKTOP_LINKS: "
+ << cpackPackageDeskTopLinks << std::endl);
+
+ cmSystemTools::
+ ExpandListArgument(cpackPackageDeskTopLinks,
+ cpackPackageDesktopLinksVector);
+ for(std::vector<std::string>::iterator i =
+ cpackPackageDesktopLinksVector.begin(); i !=
+ cpackPackageDesktopLinksVector.end(); ++i)
+ {
+ cmCPackLogger(cmCPackLog::LOG_DEBUG, "CPACK_CREATE_DESKTOP_LINKS: "
+ << *i << std::endl);
+ }
+ }
+ else
+ {
+ cmCPackLogger(cmCPackLog::LOG_DEBUG, "CPACK_CREATE_DESKTOP_LINKS: "
+ << "not set" << std::endl);
+
+ }
if ( cpackPackageExecutables )
{
cmCPackLogger(cmCPackLog::LOG_DEBUG, "The cpackPackageExecutables: "
@@ -263,9 +287,11 @@ int cmCPackNSISGenerator::InitializeInternal()
<< ".lnk\"" << std::endl;
// see if CPACK_CREATE_DESKTOP_LINK_ExeName is on
// if so add a desktop link
- std::string desktop = "CPACK_CREATE_DESKTOP_LINK_";
- desktop += execName;
- if(this->IsSet(desktop.c_str()))
+ if(cpackPackageDesktopLinksVector.size() &&
+ std::find(cpackPackageDesktopLinksVector.begin(),
+ cpackPackageDesktopLinksVector.end(),
+ execName)
+ != cpackPackageDesktopLinksVector.end())
{
str << " StrCmp \"$INSTALL_DESKTOP\" \"1\" 0 +2\n";
str << " CreateShortCut \"$DESKTOP\\"