[CMake] postBuildInstallation howto
Michael Hertling
mhertling at online.de
Sat Nov 13 15:43:12 EST 2010
On 11/13/2010 08:06 PM, luxInteg wrote:
> Greetings,
>
> I am learning cmake
>
>
> --I want to know how to set the installation directory tree. Is this done
> in the CMakeList.txt in the base directory; if not where and how?
IIRC, the INSTALL() command with the FILES, PROGRAMS and DIRECTORY
signature may appear in any CMakeLists.txt, but with the TARGETS
signature, it must be placed in the same CMakeLists.txt as the
targets it refers to. Anyway, IMO, it's a good style to have
the INSTALL() commands near their subjects, generally.
> --I want to install man pages, TEX files etc, I checked this
> http://www.cmake.org/Wiki/CMake:Install_Commands but did not see any
> references to files of the latter types -So how are these installed from a
> ~/doc directory in the build tree?
E.g., in the source directory's ~/doc/CMakeLists.txt, say
INSTALL(FILES ${MANPAGES} DESTINATION man)
with the variable MANPAGES containing the to-be-installed man pages
with their absolute paths within the build directory, or preferably
INSTALL(DIRECTORY ${CMAKE_BINARY_DIR}/doc/man/ DESTINATION man)
to install the contents of ${CMAKE_BINARY_DIR}/doc/man to the
${CMAKE_INSTALL_PREFIX}/man directory; note the trailing slash.
BTW, don't use the old INSTALL_{FILES,PROGRAMS,TARGETS}() commands; use
the new comprehensive INSTALL() command with its signatures exclusively.
> --If say one has a directory named INCLUDE in the build tree and one sets the
> files therein as ${headers} does one do
> INSTALL_FILES(/include ${headers}) to install into ${Install_prefix}/include
If the headers variable contains absolute paths, you might say
INCLUDE(FILES ${headers} DESTINATION include) anywhere the headers
variable is defined to install to the ${CMAKE_INSTALL_PREFIX}/include
directory. Otherwise, you should say INCLUDE(DIRECTORY <absolute/path/
to/INCLUDE>/ DESTINATION include) to install the contents of the whole
INCLUDE directory to ${CMAKE_INSTALL_PREFIX}/include - preferable again.
> and is it done from a CMakeLists.txt within ~/INCLUDE to
> effect installation OR do you do otherwise and if so how so?
You said the INCLUDE directory is in the build tree, and the build tree
has no CMakeLists.txt unless you're doing a discouraged in-source build:
<http://www.cmake.org/Wiki/CMake_FAQ#Out-of-source_build_trees>
Regards,
Michael
More information about the CMake
mailing list