Hi Friedrich, I am interested in contributing to KDE and would like to try ECMInstalledLibraryCheck. I am still getting familiar with the KDE contribution workflow.
At the moment, I am getting a “Forbidden” error when trying to open KDE Invent. Could you please suggest what I should do to get access, and whether there is a beginner-friendly area where feedback, documentation improvements, or additional test coverage would be useful? I would be happy to test the prototype on a small CMake/C++ project and share feedback. Best regards, Nandani On Sat, Jul 4, 2026, 8:52 PM Friedrich W. H. Kossebau <[email protected]> wrote: > Hi, > > how would you feel if there is an option to automatically test the C++ > library development artifacts (headers, CMake config, etc.) in their > installed variant for usability, before other developers get to use them? > > If that sounds somewhere interesting to you, read on :) > > Possibly you also have already heard of this, there is currently some on- > going effort to develop a system for post-installation C++ library checks, > by the implementation name ECMInstalledLibraryCheck. While already in some > usable state and there-by successfully having uncovered a number of > issues, > it is based only on a few people's needs & ideas, without any known > similar > solutions to be "inspired" from for features and patterns. > > > YOUR INPUT & COLLABORATION IS VERY WANTED > > What are your pain points with installed C++ library artifacts you wish > that > would be tested (and which cannot be tested uninstalled)? What problems > have > you seen? > > What similar solutions do exist already, for comparison & inspiration? > > Would you have fun working on integrating such checks into KDE CI? > > Have you tried the current prototype of ECMInstalledLibraryCheck on your > library, what issues did you detect in your library, what features would > you > like in the check? (if not yet, see blog post linked below how to do) > > Special question: have you seen public preprocessor definitions whose > values > depends on the build which only are defined with some library headers? > > > SMALL PEAK INTO PROTOTYPE FUNCTIONALITY > > To get an idea on the current approach with ECMInstalledLibraryCheck, the > checks are added by declaring them via such functions (by the example of > KContacts): > > --- 8< --- > # use the module from ECM > include(ECMInstalledLibraryCheck) > # for the library target KF6Contacts set up the check > ecm_add_installed_library_check(KF6Contacts > PACKAGE_NAME "KF6Contacts" > PACKAGE_VERSION ${KCONTACTS_VERSION} > PACKAGE_TARGET_NAMESPACE "KF6::" > ) > # register the official include statements for the check > ecm_installed_library_check_include_strings(KF6Contacts > HEADERS ${KContacts_CamelCase_HEADERS} > PREFIX KContacts > ) > --- 8< --- > > Further checks on certain aspects can be added by functions like > ecm_installed_library_check_cmake_variable(), > ecm_installed_library_check_compile_definition() and > ecm_installed_library_check_preprocessor_macro(). Already there is a > convenience variant of the last: > --- 8< --- > # check all includes also have the usual version macros defined afterwards > ecm_installed_library_check_version_preprocessor_macros(KF6Contacts > PREFIX KCONTACTS > VERSION ${KCONTACTS_VERSION} > SILENT # only report errors > ) > --- 8< --- > > The check on the library then will appear as global build system target > "all_installed_library_check", as well as variants per library. > > > MORE INFO > > Find the merge request of ECMInstalledLibraryCheck here: > https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/590 > > A longer blog post going into details, also how to test-drive the check: > > https://frinring.wordpress.com/2026/06/30/c-library-headers-cmake-config-files-are-we-serviceable/ > > > TRY IT, COMMENT IT > > Be very invited to shape this installed library check solution, so it can > be > useful to you right from the its first release. > Give it 15 minutes now for some considerations & feedback, and hopefully > save many more minutes in the future :) > > Hope to hear from you (even just a "want-this" or "useless-because"), > and thanks to those who already contributed. > > Cheers > Friedrich > > >
