CMake policies issues was: Re: kdesupport/automoc
Maciej Mrozowski
reavertm at gmail.com
Thu Jun 24 22:50:25 CEST 2010
On Thursday 24 of June 2010 22:30:57 Alexander Neundorf wrote:
> On Thursday 24 June 2010, Maciej Mrozowski wrote:
> > On Wednesday 23 of June 2010 23:00:12 Alexander Neundorf wrote:
> > > On Tuesday 22 June 2010, Alexander Neundorf wrote:
> > >
> > > Ok, I added cmake_policy(PUSH/POP) to Automoc4Config.cmake, so any
> > > policy changes done inside there don't propagate to the outside, so
> > > CMP0002 is not reset to NEW, so the duplicated target names should be
> > > ok. Let me know if there are still problems.
> >
> > While we're at it, would be something like attached patch more reliable?
> > So not to rely on find_program or get_filename_component to aquire
> > automoc4 path, instead to use CMAKE_INSTALL_PREFIX/bin/automoc4
> > directly. I mean, at the time Automoc4Config is prepared, we already
> > know exactly where is automoc4 executable located.
>
> On Unix systems, typically, yes.
> On Windows, no.
> They want to be able to install it to a location chosen by the user at
> package-install time, which can be different from CMAKE_INSTALL_PREFIX
> chosen at cmake time.
> So finding the executable based on the own location has its advantages. I
> wouldn't change this now.
How about they run sed on Automoc4Config.cmake?
Also what I see is, any <module>Config.cmake file I have here
(KdepimLibsConfig.cmake, KDE4WorkspaceConfig.cmake, AkonadiConfig.cmake)
contains hardcoded (determined at cmake time) paths. Only
KDevPlatformConfig.cmake seems to be more flexible and contains the following:
<snip>
get_filename_component(_KDEVPLATFORM_CURRENT_DIR "${CMAKE_CURRENT_LIST_FILE}"
PATH)
if(NOT WIN32)
# This is needed on non-win32 platforms, as lib-install-dir might be in a
# totally different prefix than include-install-dir. So instead hardcode the
# absolute path during buildtime
set( KDEVPLATFORM_INCLUDE_DIR "/usr/include/kdevplatform" )
else(NOT WIN32)
set( KDEVPLATFORM_INCLUDE_DIR
"${_KDEVPLATFORM_CURRENT_DIR}/../../../include/kdevplatform" )
endif(NOT WIN32)
</snip>
How windows guys deal with this there?
> > I've also moved Automoc config files from <libdir>/automoc4 to
> > <libdir>/cmake/Automoc4 to decrease namespace pollution and to keep it
> > consistent with kdelibs/kdevplatform/kdeworkspace/soprano (it requires
> > cmake 2.6.3 I think).
>
> Hmm, no real objections here, as long as you also take care if later on
> somebody has problems with this nevertheless ;-)
Unfortunately install location cannot be changed to <libdir>/cmake/ when
find_program(AUTOMOC4_EXECUTABLE automoc4 PATHS "${_AUTOMOC4_BIN_DIR}/bin"
NO_DEFAULT_PATH) is being used, especially with NO_DEFAULT_PATH.
Anyway the way automoc4 is being located now leaves us no option but to
install Automoc4Config.cmake directly in <libdir>/autoconf.
Also I question. FindAutomoc4.cmake says:
find_package_handle_standard_args(Automoc4 "Did not find automoc4 (part of
kdesupport). Searched for Automoc4Config.cmake in ${AUTOMOC4_SEARCH_PATHS}
using suffixes automoc4 lib/automoc4 lib64/automoc4." AUTOMOC4_EXECUTABLE)
But AUTOMOC4_SEARCH_PATHS is nowhere specified, especially not as alternative
lookup location to find_program(AUTOMOC4_EXECUTABLE, is this a bug or some
internal behaviour to look at <variable>_SEARCH_PATHS ?
--
regards
MM
More information about the Kde-buildsystem
mailing list