I've managed to get an NSIS project up and running in VIsual Studio with
CPack, but I can't figure out how to determine which configuration type is
being built. Is it possible to write up a CMakeLists that will run through
different conditionals based off of the Build Configuration Type selected in
Visual Studio? If a user selects a Debug build I'd like to be able to tell
the installer to be built with the Debug libraries instead of the Release.
That is what it does. When debug is selected in Visual Studio and you
build the PACKAGE project it will build this using debug libs.
John
Thank you for the response John. When I first setup CPack it built both
Release and Debug, but it didn't package the required DLLs in the
installer. I did some searching and came across the "GetPrerequisites"
module. I had this scan the executables I wanted to package up to
create a list of the DLLs I needed. I had to manually specify the
directory however, because I'm not sure how to tell CPack what
configuration the user wants to build. I have a feeling there's a
better way around this, but I haven't figure it out yet.
Here's the code for one of the executables in the package.
########## INSTALLER ##########
IF(INSTALLER_WITH_PROGRAM)
# Add Microsoft DLLs to Installer
INCLUDE(InstallRequiredSystemLibraries)
include(GetPrerequisites)
# Clear Path Variable
set(PATH_TO_FILE "${PATH_TO_FILE}-NOTFOUND")
set(DLL "DLL-NOTFOUND")
# Scan the executable for required DLLs
IF(EXISTS "${EXECUTABLE_OUTPUT_PATH}/Release/Program.exe")
GET_PREREQUISITES("${EXECUTABLE_OUTPUT_PATH}/Release/Program.exe"
DEPENDENCIES 1 1 "" "")
# Scan for each DLL
FOREACH(DEPENDENCY ${DEPENDENCIES})
FOREACH(PATH_TO_FILE ${CMAKE_MODULE_PATH})
find_file(DLL ${DEPENDENCY} "${PATH_TO_FILE}/bin"})
ENDFOREACH(PATH_TO_FILE)
# Add discovered DLL to Installer
install(FILES ${DLL} DESTINATION "bin" )
# Reset DLL Variable
set(DLL "DLL-NOTFOUND")
ENDFOREACH(DEPENDENCY)
# Add Release TS Executable
install(TARGETS Program RUNTIME DESTINATION "bin")
ELSE()
message("Please build
${EXECUTABLE_OUTPUT_PATH}/Release/Program.exe and run CMake again.")
ENDIF(EXISTS "${EXECUTABLE_OUTPUT_PATH}/Release/Program.exe")
ENDIF(INSTALLER_WITH_PROGRAM)
_______________________________________________
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