I would suspect that most users use the default values. I pretty much
go with the defaults with the addition of adding the /MP parameter
inside my main CMakeLists.txt file.
If you are the author of some software then this is fine. But I have the case where I have to use some existing visual studio projects using /MT and a cmake project, both of which I am not the maintainer and therefore changes cannot be made. So it was quite complicated
to get it working.

But what is against my proposal of splitting the -G option? for visual studio there are
two more platforms except Win32 and Win64, some smartphone and mobile stuff.
So the number of generators will explode anyway. with four versions and four platforms
this are a whopping number of 16 generators for visual studio alone.

-Jochen


To avoid any problems with other
users not having the right .dll runtimes I just have CMake bundle the
runtime with the install it generates.

Here is what I have in my packaging for my current application:

IF(PACKAGE_FOR_INSTALL)

SET(CPACK_PACKAGE_VERSION_MAJOR ${StudyManager_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${StudyManager_VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${StudyManager_VERSION_PATCH})

IF(CMAKE_CL_64)
     SET(CMAKE_MSVC_ARCH amd64)
   ELSE(CMAKE_CL_64)
     SET(CMAKE_MSVC_ARCH x86)
ENDIF(CMAKE_CL_64)

IF(MSVC80)

    FIND_PROGRAM(MSVC_REDIST NAMES
vcredist_${CMAKE_MSVC_ARCH}/vcredist_${CMAKE_MSVC_ARCH}.exe
      PATHS
      
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]/../../SDK/v2.0/BootStrapper/Packages/"
      
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\8.0;InstallDir]/../../SDK/v2.0/BootStrapper/Packages/"
      )
    GET_FILENAME_COMPONENT(vcredist_name "${MSVC_REDIST}" NAME)
    INSTALL(PROGRAMS ${MSVC_REDIST} COMPONENT Runtime DESTINATION bin)
    SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait
'\\\"$INSTDIR\\\\bin\\\\${vcredist_name}\\\"'")
ENDIF(MSVC80)

IF(WIN32)
        SET(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
        SET(CPACK_PACKAGE_EXECUTABLES "StudyManager")

        INSTALL(FILES
                        "${QT_BINARY_DIR}/QtCore${QT_VERSION_MAJOR}.dll"
                        "${QT_BINARY_DIR}/QtXml${QT_VERSION_MAJOR}.dll"
                        "${QT_BINARY_DIR}/QtTest${QT_VERSION_MAJOR}.dll"
                        "${QT_BINARY_DIR}/QtGui${QT_VERSION_MAJOR}.dll"
                        "${QT_BINARY_DIR}/QtNetwork${QT_VERSION_MAJOR}.dll"
                        "${QT_BINARY_DIR}/QtScript${QT_VERSION_MAJOR}.dll"
                        "${QT_BINARY_DIR}/QtSql${QT_VERSION_MAJOR}.dll"
                        DESTINATION bin
                        COMPONENT Applications
        )
ENDIF(WIN32)

set(CPACK_COMPONENTS_ALL Applications Runtime)

INCLUDE(CPack)
ENDIF(PACKAGE_FOR_INSTALL)

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to