Yuri,

Thanks for all your help.  This information is extremely helpful.  I've not
successfully made both pkg and rpm packages.

The little bits of code that you provided (i.e.
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) are very helpful.

Thanks,
Hans


> From: Yuri Timenkov <[EMAIL PROTECTED]>
> Organization: Parallels
> Date: Wed, 23 Jul 2008 15:59:52 +0400
> To: Johnson Hans <[EMAIL PROTECTED]>
> Cc: Hans Johnson <[EMAIL PROTECTED]>, <cmake@cmake.org>
> Subject: Re: [CMake] CPACK installation path configuration
> 
> On Wednesday 23 July 2008 15:38:52 Johnson, Hans wrote:
>> Yuri,
>> 
>> Thanks for your help.  The problem was that I needed to set both
>> CPACK_PACKAGING_INSTALL_PREFIX  and CPACK_PACKAGE_DEFAULT_LOCATION  to get
>> the desired behavior.  I'm still not sure how these two options interact to
>> produce the correct result.
>> 
>> SET(CPACK_PACKAGING_INSTALL_PREFIX "/")
>> SET( CPACK_PACKAGE_DEFAULT_LOCATION "/opt/${CPACK_PACKAGE_NAME}")
>> 
>>> From my testing my guess is that the install path is constructed as:
>> 
>> ${CPACK_PACKAGE_DEFAULT_LOCATION}/${CPACK_PACKAGING_INSTALL_PREFIX}/...
> As I understand CPACK_PACKAGE_DEFAULT_LOCATION is Mac-specific option which is
> used by PackageMaker when installing pkg.
> I suppose you need to fix CMAKE_INSTALL_PREFIX in top-level CMakeLists.txt. I
> use following technique:
> # Replace CMAKE_INSTALL_PREFIX to Currently used one,
> # If it wasn't overridden from command line / cache.
> if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
> set(CMAKE_INSTALL_PREFIX "/opt/MyProduct" CACHE PATH "Install path prefix,
> prepended onto install directories." FORCE)
> endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
> 
> And to avoid putting stuff in /usr, you should set
> CPACK_PACKAGING_INSTALL_PREFIX to "/" (or CPACK_SET_DESTDIR to true).
> 
>> 
>> 
>> Again,
>> Thanks,
>> Hans
>> 
>> On 7/23/08 2:29 AM, "Yuri Timenkov" <[EMAIL PROTECTED]> wrote:
>>> What is your CMAKE_INSTALL_PREFIX? And where your product installs with
>>> make install command?
>>> Did you use CPACK_SET_DESTDIR?
>>> 
>>> On Wednesday 23 July 2008 00:51:46 Hans Johnson wrote:
>>>> Hello,
>>>> 
>>>> I¹ve been trying to figure out how to use CPACK to distribute my package
>>>> as a dmg, rpm, and tar.gz files.  I¹ve been able to successfully create
>>>> the files, but the locations where the resulting files are being put are
>>>> not as desired.
>>>> 
>>>> I¹d like the resulting binary to be installed in
>>>> /opt/BRAINSFit/bin/BRAINSFit
>>>> Currently PackageMaker installs in /opt/BRAINSFit/usr/bin/BRAINSFit and
>>>> RPM installs in /usr/bin/BRAINSFit.
>>>> 
>>>> The  CMakeList.txt files are included in my previous message.
>>>> 
>>>> Any help or suggestions on what to try would be enormously appreciated.
>>>> 
>>>> Thanks,
>>>> Hans
>>>> 
>>>> 
>>>> 
>>>> From: Johnson Hans <[EMAIL PROTECTED]>
>>>> Date: Sat, 19 Jul 2008 12:29:48 -0500
>>>> To: <cmake@cmake.org>
>>>> Subject: CPACK installation path configuration
>>>> 
>>>> Hello,
>>>> 
>>>> I am trying to use cpack to create distributions of a project available
>>>> on NITRC:
>>>> svn checkout https://www.nitrc.org/svn/multimodereg BRAINSFit
>>>> 
>>>> I¹d like the resulting binary to be installed in
>>>> /opt/BRAINSFit/bin/BRAINSFit
>>>> 
>>>> Currently PackageMaker installs in /opt/BRAINSFit/usr/bin/BRAINSFit and
>>>> RPM installs in /usr/bin/BRAINSFit.
>>>> 
>>>> Can someone please help me fix my CPACK variables so that the desired
>>>> install locations are respected?
>>>> 
>>>> ======
>>>> I¹m using CMake 2.6.0
>>>> 
>>>> Any other advise about CPACK style issues would also be appreciated
>>>> because I¹ll be repeating this process for several other packages next
>>>> week.
>>>> 
>>>> Thanks,
>>>> Hans
>>>> 
>>>> ====CMakeLists.txt====
>>>> PROJECT(BRAINSFit)
>>>> cmake_minimum_required(VERSION 2.6)
>>>> cmake_policy(VERSION 2.6)
>>>> 
>>>> INCLUDE(${BRAINSFit_SOURCE_DIR}/IJMacros.txt)
>>>> 
>>>> #the following are required to uses Dart
>>>> ENABLE_TESTING()
>>>> INCLUDE(Dart)
>>>> 
>>>> #-----------------------------------------------------------------------
>>>> --- - --
>>>> # Output directories.
>>>>  IF(NOT LIBRARY_OUTPUT_PATH)
>>>>    SET (LIBRARY_OUTPUT_PATH ${BRAINSFit_BINARY_DIR}/bin CACHE INTERNAL
>>>> "Single output directory for building all librari
>>>> es.")
>>>>  ENDIF(NOT LIBRARY_OUTPUT_PATH)
>>>>  IF(NOT EXECUTABLE_OUTPUT_PATH)
>>>>    SET (EXECUTABLE_OUTPUT_PATH ${BRAINSFit_BINARY_DIR}/bin CACHE
>>>> INTERNAL "Single output directory for building all exec
>>>> utables.")
>>>>  ENDIF(NOT EXECUTABLE_OUTPUT_PATH)
>>>>  MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
>>>> 
>>>> 
>>>> OPTION(BUILD_AGAINST_SLICER3 "If OFF, then build self contained version
>>>> that only depends on ITK ." OFF)
>>>> MARK_AS_ADVANCED(BUILD_AGAINST_SLICER3)
>>>> 
>>>> OPTION(BRAINSFit_BUILD_LOCAL_CLP "If ON, then build self contained
>>>> version that only depends on ITK ." ON)
>>>> MARK_AS_ADVANCED(BRAINSFit_BUILD_LOCAL_CLP)
>>>> 
>>>> IF(BUILD_AGAINST_SLICER3)
>>>>   FIND_PACKAGE(Slicer3 REQUIRED)
>>>>   IF (Slicer3_FOUND)
>>>>     INCLUDE(${Slicer3_USE_FILE})
>>>>   ELSE (Slicer3_FOUND)
>>>>     MESSAGE(ERROR "Cannot build without a Slicer3 build tree or a
>>>> Slicer3 installation. Please set Slicer3_DIR.")
>>>>   ENDIF (Slicer3_FOUND)
>>>> ELSE(BUILD_AGAINST_SLICER3)
>>>>   FIND_PACKAGE(ITK)
>>>>   IF(ITK_FOUND)
>>>>     INCLUDE(${ITK_USE_FILE})
>>>>   ELSE(ITK_FOUND)
>>>>     MESSAGE(FATAL_ERROR
>>>>             "Cannot build without ITK.  Please set ITK_DIR.")
>>>>   ENDIF(ITK_FOUND)
>>>>   IF(BRAINSFit_BUILD_LOCAL_CLP)
>>>>     MESSAGE(WARNING "Building local Slicer Execution Model")
>>>> CMakeLists.txt
>>>> 1,1            Top
>>>> "CMakeLists.txt" 144L, 5487C
>>>>                  RUNTIME DESTINATION bin
>>>>                  LIBRARY DESTINATION lib
>>>>                  ARCHIVE DESTINATION lib/static)
>>>> 
>>>> INCLUDE(InstallRequiredSystemLibraries)
>>>> 
>>>> 
>>>> SET(CPACK_PACKAGE_VERSION_MAJOR "2")
>>>> SET(CPACK_PACKAGE_VERSION_MINOR "4")
>>>> SET(CPACK_PACKAGE_VERSION_PATCH "1")
>>>> 
>>>> SET(CPACK_PACKAGE_NAME "BRAINSFit")
>>>> SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${BRAINSFit}-dev")
>>>> SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${BRAINSFit}-A program for
>>>> medical image registraiton with mutual information met
>>>> ric.")
>>>> SET(CPACK_PACKAGE_DESCRIPTION_FILE "${BRAINSFit_SOURCE_DIR}/ReadMe.txt")
>>>> SET(CPACK_RESOURCE_FILE_LICENSE "${BRAINSFit_SOURCE_DIR}/Copyright.txt")
>>>> 
>>>> SET(CPACK_PACKAGE_DEFAULT_LOCATION "/opt/${CPACK_PACKAGE_NAME}")
>>>> SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${BRAINSFit}")
>>>> 
>>>> SET(CPACK_PACKAGE_VENDOR "NAMIC Tool Developed at The University of
>>>> Iowa")
>>>> 
>>>> SET(CPACK_SOURCE_GENERATOR "TGZ;TZ")
>>>> #SET(CPACK_SOURCE_IGNORE_FILES "/CVS/;/\\.svn/;\\.swp$;\\.#;/#;\\.*~")
>>>> SET(CPACK_SOURCE_IGNORE_FILES "")
>>>>   SET(CPACK_PACKAGE_EXECUTABLES "BRAINSFit";"A program for registering
>>>> medical images with mutual information.")
>>>> 
>>>> IF(WIN32 AND NOT UNIX)
>>>>   SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
>>>> "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VE
>>>> RSI O N_M
>>>> INOR}.${CPACK_PACKAGE_VERSION_PATCH}")
>>>>   # There is a bug in NSI that does not handle full unix paths properly.
>>>> Make
>>>>   # sure there is at least one set of four (4) backlasshes.
>>>>   SET(CPACK_PACKAGE_ICON
>>>> "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
>>>>   SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
>>>>   SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} My
>>>> Famous Project")
>>>>   SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.nitrc.org")
>>>>   SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.nitrc.org")
>>>>   SET(CPACK_NSIS_CONTACT "[EMAIL PROTECTED]")
>>>>   SET(CPACK_NSIS_MODIFY_PATH ON)
>>>> ELSE(WIN32 AND NOT UNIX)
>>>>   SET(CPACK_STRIP_FILES OFF)
>>>>   SET(CPACK_SOURCE_STRIP_FILES OFF)
>>>> ENDIF(WIN32 AND NOT UNIX)
>>>> 
>>>> INCLUDE(CPack)
> 


_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to