[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