2011/2/15 Daryl N <darylhouse2...@yahoo.com>: > Hi, > > I have a question on the use of CPack. I have CMake setup to generate > binaries and shared libraries. Up until now I have only created a TGZ with > rpath set to ".". This has worked nicely, but now I would like to create a > Debian package for proper installation. I have added DEB to CPACK_GENERATOR > and I've created my own cpack_config.cmake file. My goal is: > > 1. Run cmake/make package once and create the tar.gz file with all exe/libs > in the root folder of the tar.gz file with rpath set to ".". > 2. Create new .deb package with exes in /usr/local/bin and libs in > /usr/local/lib. Alternatively, since files are private, all could be put in > /usr/local/<some folder>. > > I've attempted this by creating my own cpack_config.cmake file to try to > override some settings per generator. Some observations: > > 1. I've been unable to set the install(<target> DESTINATION) path per > generator in my cpack_config.cmake file. Whatever the variable is set to > when the install(...) is processed in the CMakeLists.txt file is what is > used for all generators. Just want to confirm changing this isn't an option > per generator. > > The above has prevented me from having my install lines like: > install(<target> DESTINATION ${BIN_PATH}) > install(<target> DESTINATION ${LIB_PATH}) > and then setting BIN_PATH to bin and LIB_PATH to lib for DEB, but setting > them to "." for TGZ, since I can't change the variable in > .
I suppose cpack_config.cmake is your CPACK_PROJECT_CONFIG_FILE. As far as I know you cannot change install rules on "CPack generator basis". install rules belongs to CMakeLists.txt and they are evaluated at CMake-time (not CPack-time). cpack_config.cmake is evaluated at CPack-time, i.e. when CPack runs. You can do CPack-generator specific actions in this file. (like setting CPACK_SET_DESTDIR OFF or ON or changing CPACK_PACKAGING_INSTALL_PREFIX etc...) I did not tried playing with rpath but may be you can if(CPACK_GENERATOR MATCHES "TGZ") set(CMAKE_INSTALL_RPATH ".") set(CPACK_SET_DESTDIR "OFF") endif(CPACK_GENERATOR MATCHES "TGZ") if(CPACK_GENERATOR MATCHES "DEB") set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local/<somefolder>") endif(CPACK_GENERATOR MATCHES "DEB") > 2. I would also like to set the rpath per generator. So the targets in the > TGZ only look in "." while the DEB installed targets only look in > /usr/local/<some folder>. But I haven't been able to update the rpath per > generator in cpack_config.cmake. I've tried both setting > CMAKE_INSTALL_RPATH and using set_target_properties(... PROPERTIES > INSTALL_RPATH). Again, I'm assuming this can't be changed at CPack time. I don't know whether if CMAKE_INSTALL_RPATH can be changed at CPack time (as I suggested in my previous example) you'll have to try and may be verify in the CMake source code in order to check when it is handled. Whatever the current status, I don't see why it couldn't be handled at CPack time (but I may be missing something). >Do I need to run cpack > separately changing the variables before hand? I suppose that would mean 2 > builds cycles also, once for each generator. 2 build cycles will definitely work. However if you gives us more information on what's inside your "cpack_config.cmake" what works what does not work with it, may be we can see if it it can be done in a single build. I think the main issue is the fact that as far as I understand your need you want to put all files (libs, exe) in a single folder for the TGZ and have prefix+/lib, prefix+/bin in the DEB case? Changing the prefix is easy but adding (or removing) the extra /lib and /bin I don't currently know how to do that. Why won't you keep the lib and bin suffix in the TGZ case? -- Erk Membre de l'April - « promouvoir et défendre le logiciel libre » - http://www.april.org _______________________________________________ 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