I've hurried a bit when I was writing previous message. On Sat, Sep 20, 2008 at 8:12 PM, Tanguy Krotoff <[EMAIL PROTECTED]> wrote:
> > FIrst of all, there are a couple of discussions about using > > CPACK_SET_DESTDIR, install prefixes and co in this list which are about > same > > problems: directory layout depends on generator used. > > From what I've read, CPACK_SET_DESTDIR and > CPACK_PACKAGING_INSTALL_PREFIX only deal with the install prefix. > I've read this: http://www.mail-archive.com/cmake@cmake.org/msg11163.html > I think changing the install prefix is not enough for allowing this: Some part of discussion at the issue http://public.kitware.com/Bug/view.php?id=7000 (see Brad's comments). Now you can still play with prefixes and set them or not during cpack run, for example for ZIP/TAR generator set this prefix to empty, while when using rpm/deb, set it to /usr. > > ** NSIS: > /myapp.exe > /internal_lib1.dll > /plugins/plugin1.dll > ---> No install prefix > > ** DEB / RPM: > /usr/Bin/myapp > /usr/Lib/app/internal_lib1.so > /usr/Lib/app/plugins/plugin1.so > ---> install prefix is /usr/bin and also /usr/lib/app for internal stuffs > > > Next, cmake_install files (which contain install rules) are generated at > > cmake time and it may be possible to code some variables there, which > then > > can be passed through cpack. > > I've checked the cmake_install.cmake files and I'm a bit lost, is > there some examples/doc about how to modify them? I suppose it is possible to write install rules in the way they will contain placeholders for variables, somehow like this: install(TARGETS myapp DESTINATION "\${MYPACKPREFIX}/bin") (note dollar sign escaping) which should result in file(INSTALL <somethings> DESTINATION "${MYPACKPREFIX}/bin") in cmake_install.cmake file. When running cpack, define this variable (with -D, for example). CPack simply reads cmake_install.cmake files, so every variables expansions should take place. The main obstracle can be, if cmake will escape dollar signs when processing install statements of your CMakeLists.txt file. > > > Also is it possible to know the list of files to be installed by CPack > and modify this list? > In this case it would be simple to a something like this: > > foreach (filepath, CPACK_LIST_OF_FILES_TO_BE_INSTALLED) > if (CPACK_GENERATOR == "DEB" OR "RPM") > if (filepath CONTAINS "plugins") > file(REPLACE filepath "plugins" "/usr/lib/app/plugins") > list(APPEND new_list_of_files_to_be_installed filepath) > endif() > elseif() > #do nothing, keep the list of files as it is > endif() > endforeach() > > set(CPACK_LIST_OF_FILES_TO_BE_INSTALLED new_list_of_files_to_be_installed) > > -- > Tanguy Krotoff <[EMAIL PROTECTED]> > +33 6 68 42 70 24 >
_______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake