[CMake] Install files at absolute position?

Andy Cedilnik andy.cedilnik at kitware.com
Thu Jan 19 09:17:08 EST 2006


Hi Zach,

Hmm, couple of notes:

Maybe you could create a target based on the file names. This way you 
could have as many as you want.
Also, maybe you could use set/configure_file combination instead of 
FILE(append).

Other than that, it looks great.

       Andy

Zachary Pincus wrote:

> Andy,
>
> Thanks for the tip on installing things at absolute locations.
>
> Here's a hackish macro to do this, in case anyone needs it. (Note --  
> macro can only be used once per directory, and only one install path  
> is allowed per use. Modifications are an exercise for the reader.)
>
> Zach
>
> MACRO(INSTALL_AT_ABSOLUTE_PATH PATH)
>   # USAGE:
>   # INSTALL_AT_ABSOLUTE_PATH("/path/to/install" "/path/to/file1" ...  
> "path/to/fileN")
>   #
>   # Only use this macro once per directory -- otherwise the custom  
> installation
>   # will get overwritten.
>
>   FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CustomInstall.cmake" "")
>
>   FOREACH(file ${ARGN})
>     GET_FILENAME_COMPONENT(filename "${file}" NAME)
>     STRING(REGEX REPLACE "/$" "" stripped_path "${PATH}")
>     FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CustomInstall.cmake"
>      "MESSAGE(STATUS \"Installing ${stripped_path}/${filename}\")\n")
>     FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CustomInstall.cmake"
>      "FILE(INSTALL DESTINATION \"${PATH}\" TYPE FILE FILES \"${file} 
> \")\n")
>   ENDFOREACH(file)
>
>   ADD_CUSTOM_TARGET("${CMAKE_CURRENT_BINARY_DIR}/CustomInstall" ALL)
>   SET_TARGET_PROPERTIES("${CMAKE_CURRENT_BINARY_DIR}/CustomInstall"  
> PROPERTIES
>     POST_INSTALL_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/ 
> CustomInstall.cmake")
>
> ENDMACRO(INSTALL_AT_ABSOLUTE_PATH)
>
>
>
> On Jan 18, 2006, at 6:40 AM, Andy Cedilnik wrote:
>
>> Hi Zach,
>>
>> There is a way to do installing using custom install script. What  
>> you do is to create a cmake script that does whatever you want and  
>> then set on some target a pre and/or post install script:
>>
>> SET_TARGET_PROPERTIES(myLib PROPERTIES PRE_INSTALL_SCRIPT "$ 
>> {CMAKE_CURRENT_BINARY_DIR}/some_pre_install.cmake"
>>  POST_INSTALL_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/ 
>> some_post_install.cmake")
>>
>>
>> Then you can put in that file:
>> FILE(INSTALL DESTINATION "/etc" TYPE FILE FILES "/home/andy/ 
>> MyProject/myetc.file")
>>
>> Andy
>>
>>
>> Zachary Pincus wrote:
>>
>>> Hello again,
>>>
>>> I'm wondering if there is any good way to have CMake install a   
>>> particular file at an absolute position in the filesystem (not   
>>> prefixed by CMAKE_INSTALL_PREFIX) during 'make install'.
>>>
>>> It's clearly possible to send a file to any given location during  
>>> the  configure or build step, but it's more appropriate to do this  
>>> during  install, in my case.
>>>
>>> Any thoughts? (and yes, the files do need to be at specific   
>>> positions; for example in a python site-packages directory).
>>>
>>> Thanks,
>>>
>>> Zach
>>> _______________________________________________
>>> CMake mailing list
>>> CMake at cmake.org
>>> http://www.cmake.org/mailman/listinfo/cmake
>>
>>
>>
>>
>> -- 
>> Andy Cedilnik
>> Kitware Inc.
>>
>> _______________________________________________
>> CMake mailing list
>> CMake at cmake.org
>> http://www.cmake.org/mailman/listinfo/cmake
>
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake



-- 
Andy Cedilnik
Kitware Inc.



More information about the CMake mailing list