Hi, I am working on KDE Frameworks, which uses CMake.
We make use of Qt5 plugin system, where a plugin can be described by a .json file, as documented here: http://doc-snapshot.qt-project.org/qt5-stable/qtplugin.html#Q_PLUGIN_METADATA We want to generate the .json files from .desktop files. We have a tool to do so, called kservice_to_json. I am trying to express the necessary dependencies in CMake but I fail. What I want to obtain is something like that: foo.json: foo.desktop kservice_to_json -i foo.desktop -o foo.json # foo.json must be generated before moc is run, because moc tries to # read the .json file mentioned in Q_PLUGIN_METADATA foo.moc: foo.cpp foo.json moc foo.cpp -o foo.moc foo.o: foo.cpp foo.moc g++ foo.cpp -o foo.o I defined a custom command to generate the .json, like this (simplified): My latest try looks like this: macro(kservice_desktop_to_json desktop maintarget) string(REPLACE ".desktop" ".json" json ${desktop}) string(REPLACE ".desktop" "_json" target ${desktop}) string(REPLACE "." "_" target ${target}) add_custom_target(${target} DEPENDS ${json}) add_custom_command( OUTPUT ${json} COMMAND KF5::desktoptojson -i ${desktop} -o ${CMAKE_CURRENT_BINARY_DIR}/${json} DEPENDS ${desktop} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Generating ${json}" ) # Does not work ! add_dependencies(${maintarget}_automoc ${target}) endmacro(kservice_desktop_to_json) With the idea that one would use it like this: add_library(foo ...) kservice_desktop_to_json(foo.desktop foo) But this does not work because at the time the macro calls add_dependencies(${maintarget}_automoc ${target}) The "foo_automoc" target does not exist yet, so it can't add any dependency to it. I also made numerous attempts at adding the dependency to the generated moc file without success. Do you have any solution for that problem? Regards, Aurélien PS: You can find more information, including a test case there: http://thread.gmane.org/gmane.comp.kde.devel.buildsystem/8068 -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
