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