[CMake] Project initialization file path
Eric Noulard
eric.noulard at gmail.com
Thu Jun 10 04:51:32 EDT 2010
2010/6/9 Aby Louw <jalouw at csir.co.za>:
> Hi,
>
> I have a Linux project that reads an initialization file on startup to
> get some file names and variables.
>
> When doing an in-source or out of source build, I generate the
> initialization file in the CMAKE_BINARY_DIR and then also generate the C
> file that reads this file so that I know the correct path.
>
> Now when doing a "make install" I want to install the initialization
> file on the /etc path. Therefore the initialization file path in the C
> file needs to be updated. However I do not know how to recompile the C
> target before installation happens.
Looks odd to bury some config into a compiled C-file.
If the C file contains some "actual installation path" It may be easier for this
executable/function to lookup **at runtime** its actual install path...
If this C file is "reading" some config file may be you can add
some primitive search path mechanism,
1) look in "."
2) look in "${CMAKE_INSTALL_PREFIX}/...." --> you must be doing
something like that now
3) use some environment var prefix
getenv(HOME)/... --> using HOME env var
getenv(MYSW_PATH)/.... --> using specific env var
then during devel you may setup MYSW_PATH as you want
and then when installed ${CMAKE_INSTALL_PREFIX}/ will be used
provided 3) as a higher priority than 2)
> I need something like a pre install or, add_dependency to install
> target, but as far as I know this is not possible. Does anybody know of
> a workaround to this problem?
install(CODE ...
or
install(SCRIPT ...
may help you to execute extra CMake action at install time.
However I would rather use some "search path" mechanism.
--
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
More information about the CMake
mailing list