Установите установку для Windows 10, чтобы указать букву диска и путь без пробелов - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь создать установщик Windows с помощью CPACK и NSIS. Я использую Windows 10, CMake GUI, NSIS и Visual Studio Community Edition.

Он отлично работает, за исключением того, что я не могу найти параметры, поэтому место установки по умолчанию будет:

 C:\package-version.patch (e.g. C:\apbs-3.0)

Программное обеспечение apbs является совместным усилием и является кроссплатформенным, но ему не нравятся «пробелы» в именах путей, поэтому расположение по умолчанию для NSIS на Windows 10 x64:

 C:\Program Files\package version (e.g. C:\Program Files\apbs 3.0\)

Ближайшее, что я нашел, это:

 C:\\apbs 3.0

с использованием следующей конфигурации:

    string(TOLOWER ${PROJECT_NAME}         PACKAGE_NAME)
    set(CPACK_PACKAGE_NAME                 "${PACKAGE_NAME}")
    set(CPACK_PACKAGE_DESCRIPTION          "${PACKAGE_DESC}")
    set(CPACK_RESOURCE_FILE_LICENSE        "${PROJECT_SOURCE_DIR}/../LICENSE.md")
    set(CPACK_PACKAGE_DESCRIPTION_FILE     "${PROJECT_SOURCE_DIR}/README.md")
    set(CPACK_PACKAGING_INSTALL_PREFIX     "${PACKAGE_NAME}")
    set(CPACK_PACKAGE_VERSION              "${APBS_VERSION}")
    set(CPACK_PACKAGE_VERSION_PATCH        "0")
    set(CPACK_PACKAGE_VENDOR               "${VENDOR}")
    set(CPACK_PACKAGE_CONTACT              "${CONTACT}")
    set(CPACK_PACKAGE_FILE_NAME            "${PACKAGE_NAME}-${APBS_VERSION}")
    set(CPACK_STRIP_FILES                  ON)
    if(WIN32)
        # From: https://martinrotter.github.io/it-programming/2014/05/09/integrating-nsis-cmake/
        list(APPEND CPACK_GENERATOR              "NSIS")
        set(CPACK_PACKAGING_INSTALL_PREFIX       "\\\\${PACKAGE_NAME}-${APBS_VERSION}")
        set(CPACK_NSIS_INSTALL_ROOT              "C:\\\\")
    endif()

    include (CPack)

Есть ли волшебный / недокументированный набор переменных CPACK для устранения лишних '\' и замените "пробел" на '-', чтобы я мог получить установку по умолчанию?

 C:\apbs-3.0\

1 Ответ

0 голосов
/ 28 мая 2020

Следующее дает мне установочный каталог, C: \ APBS-3.0.0

set(CMAKE_MAJOR_VERSION "3")
set(CMAKE_MINOR_VERSION "0")
set(CMAKE_MICRO_VERSION "0")
set(PACKAGE_NAME                       "${PROJECT_NAME}")
set(CPACK_PACKAGE_NAME                 "${PACKAGE_NAME}")
set(CPACK_PACKAGE_DESCRIPTION          "APBS - Adaptive Poisson Boltzmann Solver")
set(CPACK_RESOURCE_FILE_LICENSE        "${PROJECT_SOURCE_DIR}/../LICENSE.md")
set(CPACK_PACKAGE_DESCRIPTION_FILE     "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_SOURCE_IGNORE_FILES          "${PROJECT_BINARY_DIR};/.git/;.gitignore")
set(CPACK_PACKAGE_VERSION_MAJOR        "${CMAKE_MAJOR_VERSION}")
set(CPACK_PACKAGE_VERSION_MINOR        "${CMAKE_MINOR_VERSION}")
set(CPACK_PACKAGE_VERSION_PATCH        "${CMAKE_MICRO_VERSION}")
set(CPACK_PACKAGE_VENDOR               "PNNL")
set(CPACK_PACKAGE_CONTACT              "APBS - https://github.com/Electrostatics/apbs-pdb2pqr")
set(CPACK_PACKAGE_FILE_NAME            "${PACKAGE_NAME}-${APBS_VERSION}")
set(CPACK_STRIP_FILES                   ON)

if(WIN32)
    # From: https://martinrotter.github.io/it-programming/2014/05/09/integrating-nsis-cmake/
    SET(CPACK_NSIS_PACKAGE_NAME              "${PACKAGE_NAME}-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_MICRO_VERSION}")
    SET(CPACK_NSIS_DISPLAY_NAME              "${PACKAGE_NAME}-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_MICRO_VERSION}")
    SET(CPACK_PACKAGE_INSTALL_DIRECTORY      "${PACKAGE_NAME}-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_MICRO_VERSION}")
    SET(CPACK_NSIS_INSTALL_ROOT              "C:")
    set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY   "${PACKAGE_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}")
    list(APPEND CPACK_GENERATOR              "NSIS")
endif()

Надеюсь, это поможет другим, ищущим похожие решения.

...