I'm CPack to build a package for a Software and I'd like to use a custom template (a NSIS.template.in to replace CPack's default). Still Cpack is not using my template. I'm Using Clion bundled cmake (version 3.25.2). Here is my CMakeList.txt. It's not pretty yet, but it'll come.
cmake_minimum_required(VERSION 3.25)
project(prigo_parcours VERSION 0.1.1)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt6 REQUIRED COMPONENTS
Core
Gui
Widgets
)
add_subdirectory(OpenXLSX)
include_directories(src/)
add_executable(prigo_parcours resources/resources.qrc main.cpp forms/cursusgen.cpp forms/cursusgen.h forms/cursusgen.ui forms/yearform.cpp forms/yearform.h forms/yearform.ui src/parcours.h src/excelio.cpp src/excelio.h forms/appsettings.cpp forms/appsettings.h forms/appsettings.ui)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set_property(TARGET prigo_parcours PROPERTY WIN32_EXECUTABLE true)
message("BUILDING AS RELEASE")
endif()
target_link_libraries(prigo_parcours
PRIVATE
Qt::Core
Qt::Gui
Qt::Widgets
OpenXLSX::OpenXLSX
)
if (WIN32 AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
set(DEBUG_SUFFIX)
if (MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
set(DEBUG_SUFFIX "d")
endif ()
set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
endif ()
endif ()
if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
endif ()
foreach (QT_LIB Core Gui Widgets)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/bin/Qt6${QT_LIB}${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>")
endforeach (QT_LIB)
endif ()
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/formulas-update.vbs DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/template.xlsx DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
install(TARGETS prigo_parcours
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
qt_generate_deploy_app_script(
TARGET prigo_parcours
OUTPUT_SCRIPT deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})
install(FILES data/formulas-update.vbs data/template.xlsx data/prigo.ini DESTINATION bin/data/)
include(CPack)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_MODULE_PATH}")
message(NOTICE "${CMAKE_MODULE_PATH}")
set(CPACK_PACKAGE_NAME "prigo-parcours")
set(APP_ICON ${CMAKE_CURRENT_SOURCE_DIR}/resources/HELB_ICON.ico)
set(APP_ICON_UNI ${CMAKE_CURRENT_SOURCE_DIR}/resources/HELB_ICON_UNI.ico)
configure_file ("${PROJECT_SOURCE_DIR}/package-options.cmake.in"
"${PROJECT_BINARY_DIR}/package-options.cmake"
@ONLY)
set(CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/package-options.cmake")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
message(NOTICE "BUILDING AS DEBUG")
endif()
add_custom_target(prigo_parcours_package COMMAND ${CMAKE_CPACK_COMMAND} -C $<CONFIGURATION> --config ${CMAKE_CURRENT_BINARY_DIR}/package-options.cmake DEPENDS prigo_parcours)
message(NOTICE ${PROJECT_VERSION})
also the configuration input file for CPack
include(CPackConfig.cmake)
set(CPACK_PACKAGE_NAME @CPACK_PACKAGE_NAME@)
set(CPACK_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
set(CPACK_PACKAGE_VERSION_MAJOR @CMAKE_PROJECT_VERSION_MAJOR@)
set(CPACK_PACKAGE_VERSION_MINOR @CMAKE_PROJECT_VERSION_MINOR@)
set(CPACK_PACKAGE_VERSION_PATCH @CMAKE_PROJECT_VERSION_PATCH@)
set(CPACK_PACKAGE_VERSION @CMAKE_PROJECT_VERSION@)
#set(CPACK_PACKAGE_ICON @APP_ICON@)
set(CPACK_NSIS_MUI_ICON @APP_ICON@)
set(CPACK_NSIS_MUI_UNIICON @APP_ICON_UNI@)
set(CPACK_NSIS_INSTALL_ROOT "'$LocalAppData'")
set(CPACK_NSIS_CREATE_ICONS_EXTRA
"CreateShortCut '$LocalAppData\\\\$STARTMENU_FOLDER\\\\Prigo Parcours.lnk' '$INSTDIR\\\\bin\\\\prigo_parcours.exe'"
)
set(CPACK_NSIS_DELETE_ICONS_EXTRA
"Delete '$LocalAppData\\\\$START_MENU\\\\Prigo Parcours.lnk'"
)
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Win-${CPACK_PACKAGE_ARCHITECTURE}-@CMAKE_BUILD_TYPE@)
Any ideas?
I've tried adding the path to that custom template inside the CMAKE_MODULE_PATH variable as seen on forums.
As stated in the question's comments, I had put my NSIS Template in CMAKE_MODULE_PATH after the call to CPack. Since CPack checks CMAKE_MODULE_PATH when it's included, it checked for a template in a variable I hadn't touched yet. Makes sense.