What to do with _set_fancy?
Alexander Neundorf
neundorf at kde.org
Thu Sep 15 10:11:45 UTC 2011
On Tuesday, September 13, 2011 08:27:27 PM Stephen Kelly wrote:
> Hi,
>
> FindKDE4Internal has a macro _set_fancy which does some messing about with
> the cmake cache and variables one might set (particularly paths).
>
> * Where does this feature belong?
It is very special.
For some of the install destinations, it shouldn't be necessary at all.
E.g. for the LIB_INSTALL_DIR and for INCLUDE_INSTALL_DIR, these two don't even
have to be in the cache, so a simple set should do for them (as discussed in
Randa). This has the positive effect that it is much easier to find the
include and lib directory from a Config.cmake file.
For some, it needs to be in the cache, e.g. the /etc-dir, SYSCONFIG I think.
Additionally, it has the additional logic, that if kdelibs has already been
installed to the current CMAKE_INSTALL_PREFIX, then it reuses all the install
dirs from that kdelibs installation.
This was a special request from some of our developers.
Also, we always use full paths for install locations, which is not a good
thing, since it creates problems on Windows. So this should be changed for
kf5.
> * Is it working around a cmake deficiency?
Not really.
> * Does cmake need to be fixed?
Since 2.8.4 or 2.8.5 cmake comes with a GNUInstallDirs.cmake, which defines a
set of install locations as cache variables.
Maybe we should use that instead ?
It puts all the install locations in the cache (including e.g. the one for
headers, which IMO should not be modifiable).
This also allows to use absolute paths in the install locations, which, for
most locations, we shouldn't do.
And of course, it doesn't and can't have the special logic for reusing the
install locations if a kdelibs has been found in the same location.
So, I'm not sure what to do.
IMO, this is something KDE-specific, so it should/could be in some KDE-
specific component, and if some software uses this component, it becomes a KDE
software.
Then we could just keep it as it is, including the set of install dirs which
are defined in FindKDE4Internal.cmake.
(similar to how we decide which compiler flags to use etc.)
Alex
More information about the Kde-buildsystem
mailing list