Build problems with kdepim/akonadi/resource/knut/
Alexander Neundorf
neundorf at kde.org
Thu Dec 4 22:03:49 CET 2008
On Thursday 04 December 2008, Brad Hards wrote:
> make[2]: *** No rule to make target `/akonadi-kde/kcfg2dbus.xsl', needed by
> `akonadi/resources/knut/org.kde.Akonadi.Knut.Settings.xml'. Stop.
> make[1]: ***
> [akonadi/resources/knut/CMakeFiles/akonadi_knut_resource.dir/all] Error 2
> make: *** [all] Error 2
>
> I found this
> qt4_add_dbus_adaptor(knutresource_SRCS
> ${CMAKE_CURRENT_BINARY_DIR}/org.kde.Akonadi.Knut.Settings.xml settings.h
> Settings
> )
>
> So I'm guessing that ${CMAKE_CURRENT_BINARY_DIR} is null.
No, becaise it doesn't complain about org.kde.Akonadi.Knut.Settings.xml, but
about kcfg2dbus.xsl.
Now the question is, where does this come from ?
Let's find out.
Looking at the CMakeLists.txt, there is a macro which doesn't have the KDE4_
prefix, so it doesn't come from kdelibs:
kcfg_generate_dbus_interface(${CMAKE_CURRENT_SOURCE_DIR}/knutresource.kcfg
org.kde.Akonadi.Knut.Settings)
(that's why it makes a lot of sense to use these prefixes consistently).
Let's find out where this macro comes from.
Candidates are:
the *.cmake files coming from kdelibs/cmake/modules/. But they shouldn't be
it, since there is no file there which has a kcfg_ prefix. A grep in that
directory confirms that it's not there in kdelibs/cmake/modules/.
Next candidate are the *cmake files in kdepimlibs/cmake/modules/. Also no file
with kcfg_ prefix. Grep confirms, it's not there.
So now the only files left are the *.cmake and CMakeLists.txt files in
kdepim/.
And, indeed it's coming from kdepim/akonadi/CMakeLists.txt.
Here is it:
macro( kcfg_generate_dbus_interface _kcfg _name )
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name}.xml
COMMAND ${XSLTPROC_EXECUTABLE} --stringparam interfaceName ${_name}
${KDEPIMLIBS_DATA_DIR}/akonadi-kde/kcfg2dbus.xsl
${_kcfg}
> ${CMAKE_CURRENT_BINARY_DIR}/${_name}.xml
DEPENDS ${KDEPIMLIBS_DATA_DIR}/akonadi-kde/kcfg2dbus.xsl
${_kcfg}
)
endmacro( kcfg_generate_dbus_interface )
So ${KDEPIMLIBS_DATA_DIR} must be empty.
Ah, yes, I changed that from DATA_INSTALL_DIR this monday. DATA_INSTALL_DIR
was wrong because it is the current install directory for data files, which
can be different from the data install dir of kdepimlibs, where
akonadi-kde/kcfg2dbus.xsl comes from.
So where does KDEPIMLIBS_DATA_DIR come from ?
Should really be kdepimlibs. kdepimlibs stuff is loaded via
FindKdepimLibs.cmake, which is in kdelibs/cmake/modules/. This file includes
another file, KdepimLibsInformation.cmake, generated by
kdepimlibs/CMakeLists.txt (if you don't know, grepping for
KdepimLibsInformation.cmake in kdepimlibs can show you that).
So KdepimLibsInformation.cmake is supposed to set KDEPIMLIBS_DATA_DIR.
If it doesn't do that for you, I guess your kdepimlibs (and kdelibs) isn't
current ?
Alex
More information about the Kde-buildsystem
mailing list