<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developer – Finding assistance</title><link>/docs/getting-started/building/help/</link><description>Recent content in Finding assistance on Developer</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/getting-started/building/help/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Where to find the development team</title><link>/docs/getting-started/building/help/developers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/getting-started/building/help/developers/</guid><description>
&lt;p&gt;The KDE developers are here to assist you if you need any help with KDE software development.&lt;/p&gt;
&lt;p&gt;There are several ways to get in touch with KDE developers, either generally or for a specific project. The most important communication channels are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Real-time chat:&lt;/strong&gt; &lt;a href="https://go.kde.org/matrix/#/#kde-devel:kde.org" &gt;#kde-devel:kde.org&lt;/a&gt; room on &lt;a href="https://community.kde.org/Matrix" &gt;Matrix&lt;/a&gt; (all KDE rooms are listed here)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forum:&lt;/strong&gt; &lt;a href="https://discuss.kde.org/c/development/10" &gt;Development forum&lt;/a&gt; on &lt;a href="https://discuss.kde.org" &gt;KDE Discuss&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mailing list:&lt;/strong&gt; &lt;a href="https://mail.kde.org/mailman/listinfo/kde-devel" &gt;kde-devel&lt;/a&gt; (&lt;a href="http://kde.org/support/#mailinglists" &gt;Learn more about mailing lists&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are general KDE development communication channels, and you may be directed to a more appropriate place for the project you're interested in.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Many projects and teams have their own real-time chat channels, which can be found on the &lt;a href="https://community.kde.org/Matrix#Rooms" &gt;Matrix Rooms&lt;/a&gt; page.
If your Matrix client supports browsing spaces (like Element) then you can join the &lt;a href="https://go.kde.org/matrix/#/#kde-community:kde.org" &gt;KDE Community Matrix Space&lt;/a&gt;. It will display the same list of rooms as you see below, but easily accessible inside of your client.&lt;/li&gt;
&lt;li&gt;There is a &lt;a href="http://www.kde.org/mailinglists/" &gt;list of mailing lists&lt;/a&gt; if you want to find a mailing list for a specific team directly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a href="https://community.kde.org/Get_Involved" &gt;Get Involved&lt;/a&gt; wiki page includes links to more general contribution teams.&lt;/p&gt;</description></item><item><title>Docs: Learning more</title><link>/docs/getting-started/building/help/learn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/getting-started/building/help/learn/</guid><description>
&lt;p&gt;Most KDE software is written in C++ using the &lt;a href="https://www.qt.io" &gt;Qt toolkit&lt;/a&gt; and &lt;a href="https://develop.kde.org/products/frameworks/" &gt;KDE Frameworks&lt;/a&gt;. Though prior experience with these technologies or other programming languages is helpful, you don't need to be a C++ programmer to get started! For example, no programming knowledge whatsoever is required to do things like improving text labels.&lt;/p&gt;
&lt;p&gt;If you'd like to dive deeper into it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Qt wiki contains &lt;a href="https://wiki.qt.io/Books" &gt;a list of online books&lt;/a&gt; for learning Qt programming.&lt;/li&gt;
&lt;li&gt;Qt also provides &lt;a href="https://doc.qt.io/qt-5/qtexamplesandtutorials.html" &gt;lots of examples&lt;/a&gt; you can look at.&lt;/li&gt;
&lt;li&gt;For visual learners, &lt;a href="https://www.youtube.com/watch?v=JxyTkXLbcV4&amp;amp;list=PL6CJYn40gN6hdNC1IGQZfVI707dh9DPRc" &gt;this YouTube playlist of QML tutorials&lt;/a&gt; by KDE patron &lt;a href="https://www.kdab.com" &gt;KDAB&lt;/a&gt; may be useful.&lt;/li&gt;
&lt;li&gt;The reference API documentation for KDE Frameworks can be found on the &lt;a href="https://api.kde.org/" &gt;KDE API website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;KDE also provides a &lt;a href="https://community.kde.org/Get_Involved/development/Learn" &gt;curated wiki page full of learning resources&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Docs: Choose what to work on</title><link>/docs/getting-started/building/help/choosing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/getting-started/building/help/choosing/</guid><description>
&lt;p&gt;The best place to start is with something that personally affects you: for example, a small bug or glitch in a piece of KDE software that you use, or an idea you have for a new feature.&lt;/p&gt;
&lt;p&gt;The personal angle will impart more motivation to get started, push through challenges, and finish your contribution to KDE. This isn't a requirement, but it's a strong indicator that you'll be able to complete the task as a brand new KDE contributor.&lt;/p&gt;
&lt;p&gt;If everything works great for you, here are some other ideas for starting points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improve awkwardly-worded messages and labels that are written in English. This is a great way for non-programmers to contribute! If you can compile software and have a good grasp of English, you can make a big difference here.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Work on Junior Jobs, which are small tasks that are suitable for beginners (both bugs and features). You can find them available both on &lt;a href="https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;keywords=junior-jobs&amp;amp;list_id=1340815" &gt;Bugzilla&lt;/a&gt; and &lt;a href="https://invent.kde.org/dashboard/issues?sort=created_date&amp;amp;state=opened&amp;amp;label_name%5B%5D=Junior&amp;#43;Job" &gt;Gitlab&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Work on &lt;a href="https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;keywords=usability&amp;amp;keywords_type=allwords&amp;amp;list_id=1493316&amp;amp;order=product%2Cchangeddate%20DESC%2Cbug_status%20DESC%2Cresolution%2Cpriority%2Cassigned_to%2Cbug_id&amp;amp;query_format=advanced" &gt;bugs related to&lt;/a&gt; KDE's &lt;a href="https://community.kde.org/Goals/Usability_%26_Productivity" &gt;Usability &amp;amp; Productivity initiative&lt;/a&gt;, many of which are small and easy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Work on &lt;a href="https://bugs.kde.org/buglist.cgi?bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bug_severity=task&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;known_name=VHI-priority%20Plasma%20bugs&amp;amp;list_id=2605943&amp;amp;priority=HI&amp;amp;product=Bluedevil&amp;amp;product=Breeze&amp;amp;product=Discover&amp;amp;product=drkonqi&amp;amp;product=frameworks-plasma&amp;amp;product=kactivitymanagerd&amp;amp;product=kde-gtk-config&amp;amp;product=kdeplasma-addons&amp;amp;product=khelpcenter&amp;amp;product=kinfocenter&amp;amp;product=klipper&amp;amp;product=kmenuedit&amp;amp;product=krunner&amp;amp;product=KScreen&amp;amp;product=kscreenlocker&amp;amp;product=ksmserver&amp;amp;product=ksysguard&amp;amp;product=KSystemLog&amp;amp;product=kwayland-integration&amp;amp;product=kwin&amp;amp;product=Plasma%20SDK&amp;amp;product=Plasma%20Vault&amp;amp;product=Plasma%20Workspace%20Wallpapers&amp;amp;product=plasma-disks&amp;amp;product=plasma-integration&amp;amp;product=plasma-nm&amp;amp;product=plasma-pa&amp;amp;product=plasma-simplemenu&amp;amp;product=plasma-systemmonitor&amp;amp;product=plasmashell&amp;amp;product=policykit-kde-agent-1&amp;amp;product=Powerdevil&amp;amp;product=print-manager&amp;amp;product=printer-applet&amp;amp;product=pulseaudio-qt&amp;amp;product=systemsettings&amp;amp;product=xdg-desktop-portal-kde&amp;amp;query_based_on=VHI-priority%20Plasma%20bugs&amp;amp;query_format=advanced" &gt;15 minute bugs&lt;/a&gt;, bugs that can be found within 15 minutes of using Plasma.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are many other lists of issues you can take a look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The Usability and Productivity goal wiki page mentioned before has its own &lt;a href="https://community.kde.org/Goals/Usability_%26_Productivity#How_you_can_help" &gt;list of easy bugs&lt;/a&gt; you can tackle.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging" &gt;Bug Triaging team&lt;/a&gt; has &lt;a href="https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging#Decide_what_to_work_on" &gt;many search queries&lt;/a&gt; that can be useful to search for bugs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://community.kde.org/Gardening" &gt;Gardening team&lt;/a&gt; has a &lt;a href="https://invent.kde.org/dashboard/merge_requests?draft=no&amp;amp;not%5Blabel_name%5D%5B%5D=Gardening%3A&amp;#43;Stale&amp;amp;scope=all&amp;amp;sort=updated_asc&amp;amp;state=opened" &gt;stale merge requests list&lt;/a&gt; full of old merge requests with interesting but unfinished ideas. You can ask their developers if it's okay to take over the work from them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://community.kde.org/App_ideas" &gt;list of app ideas&lt;/a&gt; is a good entrypoint if you are looking to make a new KDE application from scratch.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Try not to start out by proposing or working on major features or significant design changes. These can be controversial, and the smoothest way to get going is by working on relatively non-controversial bugfixes. Start slowly and build trust!&lt;/p&gt;
&lt;p&gt;Once you've got a general idea about what you want to work on, you can &lt;a href="/docs/getting-started/building/help/developers/" &gt;get in touch with the existing developers&lt;/a&gt; and they can help you out by pointing you to the right place in the code and providing advice about how to tackle the problem.&lt;/p&gt;</description></item><item><title>Docs: Source code cross-referencing</title><link>/docs/getting-started/building/help/crossreferencing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/getting-started/building/help/crossreferencing/</guid><description>
&lt;p&gt;To search for a class, method, signal name or any other sort of code in all KDE repos, including QML and CMake, KDE provides a code referencing tool to index code in the various KDE repositories: the &lt;a href="https://lxr.kde.org/" &gt;KDE Source Code Cross Reference (LXR)&lt;/a&gt; website.&lt;/p&gt;
&lt;p&gt;By clicking on the &lt;code&gt;Branch group&lt;/code&gt; menu at the top right, you can select whether you'd like to see KDE software in Qt5 or Qt6, and whether to search for code in the master branches or from the stable (released) branches.&lt;/p&gt;
&lt;p&gt;LXR has two search modes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On the &amp;quot;Identifier&amp;quot; search page, you can search for:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Class names, for example &lt;code&gt;RenameDialog&lt;/code&gt;, &lt;code&gt;StatJob&lt;/code&gt;, &lt;code&gt;QLatin1String&lt;/code&gt;, or &lt;code&gt;QListWidget&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Method names, for example &lt;code&gt;addConfigSources&lt;/code&gt;, &lt;code&gt;setAboutData&lt;/code&gt;, or &lt;code&gt;deleteLater&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Signal names, for example &lt;code&gt;mimeTypeFound&lt;/code&gt; or &lt;code&gt;errorOccurred&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="text-center mr-5 pr-5"&gt;&lt;img src="/docs/getting-started/building/help/crossreferencing/lxr-identifier.webp"
alt="The LXR identifier search."&gt;&lt;figcaption&gt;
&lt;p&gt;The LXR identifier search.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol start="2"&gt;
&lt;li&gt;On the &amp;quot;General search&amp;quot; page you can search for strings:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;For example, if you'd like to find in which source file the string &amp;quot;Paste Clipboard Contents&amp;quot; from Dolphin's context menu is defined, type &amp;quot;Paste Clipboard Contents&amp;quot; in the &lt;code&gt;Or containing:&lt;/code&gt; field. This search includes class, method, and signal names.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="text-center mr-5 pr-5"&gt;&lt;img src="/docs/getting-started/building/help/crossreferencing/lxr-general.webp"
alt="The LXR general search."&gt;&lt;figcaption&gt;
&lt;p&gt;The LXR general search.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Other ways to search across all of the KDE git repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;By using &lt;a href="https://invent.kde.org" &gt;KDE's Gitlab instance&lt;/a&gt;: pressing &lt;code&gt;/&lt;/code&gt; or clicking on the search bar from the home page will trigger a global search. You can also visit a specific project's repository and use the same mechanism to search in the project's code.&lt;/li&gt;
&lt;li&gt;By using a local checkout of several repositories with kde-builder: &lt;code&gt;kde-builder --src-only&lt;/code&gt; will download the source code of more than 300 KDE git repositories in &lt;code&gt;~/kde/src&lt;/code&gt;. You can then search inside this directory using any tool, like &lt;code&gt;grep &amp;quot;search query&amp;quot; --recursive --ignore-case&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Docs: Installing build dependencies</title><link>/docs/getting-started/building/help/dependencies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/getting-started/building/help/dependencies/</guid><description>
&lt;p&gt;This page handles the normal issues related to missing dependencies when building with kde-builder. If you have any specific issues, consult our &lt;a href="/docs/getting-started/building/kde-builder/kde-builder-failure/" &gt;Troubleshooting page&lt;/a&gt; or &lt;a href="/docs/getting-started/building/help/developers/" &gt;contact the developers&lt;/a&gt;.&lt;/p&gt;
&lt;div class="d-flex align-items-center notecard notecard--warning" role="alert"&gt;
&lt;span&gt;
&lt;p class="h4 mt-0"&gt;⚠️ Before proceeding&lt;/p&gt;&lt;p&gt;Make sure you have followed &lt;a href="/docs/getting-started/building/kde-builder/kde-builder-setup/#set-up-kde-builder" &gt;Set up kde-builder&lt;/a&gt; in full and have installed the default package dependencies:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kde-builder --install-distro-packages&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id="how-to-install-all-the-build-dependencies-of-one-package"&gt;How to install all the build dependencies of one package&lt;/h2&gt;
&lt;p&gt;Often the simplest solution to the problem of missing dependencies is to automatically install all of the project's required dependencies.&lt;/p&gt;
&lt;p&gt;Because most distributions keep track of package dependencies, most also provide their own built-in commands to install all the build dependencies of a package.&lt;/p&gt;
&lt;p&gt;While these commands will not &lt;em&gt;always&lt;/em&gt; install all dependencies you will need when compiling KDE software (for example, when compiling with &lt;a href="/docs/getting-started/building/kde-builder/kde-builder-setup/" &gt;kde-builder&lt;/a&gt;, where the software is always changing), they will make your dependency resolution faster.&lt;/p&gt;
&lt;h3 id="debian-ubuntu-kubuntu-and-kde-neon"&gt;Debian, Ubuntu, Kubuntu, and KDE neon&lt;/h3&gt;
&lt;p&gt;Make sure that you have enabled the source repositories for your distribution, as explained in &lt;a href="/docs/getting-started/building/kde-builder/kde-builder-setup/#debian-ubuntu-based-distributions" &gt;Debian/Ubuntu-based distributions&lt;/a&gt;. Without them, &lt;code&gt;apt build-dep&lt;/code&gt; will fail with &lt;code&gt;E: You must put some 'deb-src' URIs in your sources.list&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;All known build dependencies for the package you want to build can be installed with &lt;code&gt;apt build-dep&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt build-dep dolphin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="opensuse"&gt;openSUSE&lt;/h3&gt;
&lt;p&gt;All known build dependencies for the package you want to build can be installed with &lt;code&gt;zypper source-install --build-deps-only&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper --plus-content repo-source source-install --build-deps-only dolphin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;--plus-content&lt;/code&gt; option is required to temporarily enable the source repositories containing the build dependency information.&lt;/p&gt;
&lt;h3 id="fedora"&gt;Fedora&lt;/h3&gt;
&lt;p&gt;All known build dependencies for the package you want to build can be installed with &lt;code&gt;dnf builddep&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf builddep dolphin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="using-build-errors-to-find-missing-dependencies"&gt;Using build errors to find missing dependencies&lt;/h2&gt;
&lt;p&gt;Whenever you attempt to compile a project and it fails to build, most of the time this is caused by a missing dependency.&lt;/p&gt;
&lt;p&gt;Let's say you see the following error when compiling a project:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-- Could NOT find KF6TextWidgets &lt;span class="o"&gt;(&lt;/span&gt;missing: KF6TextWidgets_DIR&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-- Could NOT find KF6TextWidgets: found neither KF6TextWidgetsConfig.cmake nor kf6textwidgets-config.cmake
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 &lt;span class="o"&gt;(&lt;/span&gt;message&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Could NOT find KF6 &lt;span class="o"&gt;(&lt;/span&gt;missing: TextWidgets&lt;span class="o"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This error is provided by CMake and it means you are missing the KDE Frameworks 6 library KTextWidgets.&lt;/p&gt;
&lt;p&gt;For projects using &lt;a href="https://mesonbuild.com/" &gt;Meson&lt;/a&gt;, the error message would look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Build-time dependency gi-docgen found: NO &lt;span class="o"&gt;(&lt;/span&gt;tried pkgconfig and cmake&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docs/api/meson.build:5:15: ERROR: Dependency &lt;span class="s2"&gt;&amp;#34;gi-docgen&amp;#34;&lt;/span&gt; not found, tried pkgconfig and cmake&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Meson projects typically prefer using &lt;code&gt;pkgconfig&lt;/code&gt; over CMake package configuration files.&lt;/p&gt;
&lt;p&gt;The error here states that Meson could not find the pkgconfig file for &lt;code&gt;gi-docgen&lt;/code&gt; (most likely a file with the extension &lt;code&gt;.pc&lt;/code&gt;) or the CMake file (most likely a file with the extension &lt;code&gt;.cmake&lt;/code&gt;) that contains &lt;code&gt;gi-docgen&lt;/code&gt; in its name (case insensitively).&lt;/p&gt;
&lt;h3 id="generic-search"&gt;Generic search&lt;/h3&gt;
&lt;p&gt;There are two types of dependencies: build dependencies and runtime dependencies. The distribution package names for build dependencies usually begin with &lt;code&gt;lib&lt;/code&gt; and/or end in &lt;code&gt;-dev&lt;/code&gt; or &lt;code&gt;-devel&lt;/code&gt;, whereas runtime dependencies usually just start with &lt;code&gt;lib&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For build dependencies you will likely only need packages that end in &lt;code&gt;-dev&lt;/code&gt; or &lt;code&gt;-devel&lt;/code&gt;, but in some cases you might need to install packages starting with &lt;code&gt;lib&lt;/code&gt; too.&lt;/p&gt;
&lt;p&gt;In the previous cmake example, KTextWidgets is a build dependency.&lt;/p&gt;
&lt;p&gt;The main way to find the package that provides KTextWidgets is to search for it in your package manager:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian and derivatives: &lt;code&gt;sudo apt search textwidgets&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;openSUSE: &lt;code&gt;sudo zypper search textwidgets&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fedora: &lt;code&gt;sudo dnf search textwidgets&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Arch: &lt;code&gt;sudo pacman -Ss textwidgets&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;FreeBSD: &lt;code&gt;sudo pkg search textwidgets&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just searching for the component usually reveals the right package name, although it ultimately amounts to guessing or trial-and-error. KDE frameworks or other libraries often have various, slightly different, names, depending on the context. For example, KTextWidgets might sometimes be called TextWidgets, KF6TextWidgets or similar names. If you can't find anything for one name, try searching for such variations.&lt;/p&gt;
&lt;p&gt;The usual pattern you will find for dependency packages looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian and derivatives: &lt;code&gt;lib&amp;lt;packagename&amp;gt;-dev&lt;/code&gt; or &lt;code&gt;&amp;lt;packagename&amp;gt;-dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;openSUSE and Fedora: &lt;code&gt;kf6-&amp;lt;packagename&amp;gt;-devel&lt;/code&gt; or &lt;code&gt;libKF6&amp;lt;PackageName&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Arch: &lt;code&gt;&amp;lt;packagename&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="d-flex align-items-center notecard notecard--success" role="alert"&gt;
&lt;span&gt;
&lt;p class="h4 mt-0"&gt;Tip&lt;/p&gt;&lt;p&gt;You can also use web shortcuts provided by KRunner, which will open the package search website for each distribution.&lt;/p&gt;
&lt;p&gt;For example: open KRunner with Alt + Space, then type: &lt;code&gt;debian: textwidgets&lt;/code&gt;. Your browser will open the &amp;quot;textwidgets&amp;quot; page of the &lt;a href="https://packages.debian.org/" &gt;Debian Package Search website&lt;/a&gt; automatically.&lt;/p&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id="finding-specific-packages-using-cmake-package-configuration-files"&gt;Finding specific packages using CMake package configuration files&lt;/h3&gt;
&lt;p&gt;A more efficient way is to use the functionality provided by your package manager to search for the CMake config file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian and derivatives: &lt;code&gt;apt-file find KF6TextWidgetsConfig.cmake&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;openSUSE: &lt;code&gt;zypper what-provides 'cmake(KF6TextWidgets)'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fedora: &lt;code&gt;dnf provides 'cmake(KF6TextWidgets)'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Arch: &lt;code&gt;pkgfile KF6TextWidgetsConfig.cmake&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fedora and openSUSE come with this functionality by default. On Debian, you will need to install &lt;code&gt;apt-file&lt;/code&gt; manually. On Arch, install &lt;code&gt;pkgfile&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If while using &lt;code&gt;apt-file&lt;/code&gt; you get an error similar to the following:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The imported target &lt;span class="s2"&gt;&amp;#34;Qt6::qtwaylandscanner&amp;#34;&lt;/span&gt; references the file
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;/usr/lib/qt6/libexec/qtwaylandscanner&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;but this file does not exist.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can run this to see what package contains this file:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-file find /usr/lib/qt6/libexec/qtwaylandscanner&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You will get the following output:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qt6-wayland-dev-tools: /usr/lib/qt6/libexec/qtwaylandscanner&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So the package you need to install is &lt;code&gt;qt6-wayland-dev-tools&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="finding-specific-packages-using-pkgconfig-files"&gt;Finding specific packages using pkgconfig files&lt;/h3&gt;
&lt;p&gt;Similarly to the above, some distributions also allow querying for packages using pkgconfig files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;openSUSE: &lt;code&gt;zypper what-provides 'pkgconfig(gi-docgen)'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fedora: &lt;code&gt;dnf provides 'pkgconfig(gi-docgen)'&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="finding-missing-executables"&gt;Finding missing executables&lt;/h3&gt;
&lt;p&gt;If the CMake error looks like the following:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 &lt;span class="o"&gt;(&lt;/span&gt;message&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Could NOT find Sass &lt;span class="o"&gt;(&lt;/span&gt;missing: Sass_EXECUTABLE&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Call Stack &lt;span class="o"&gt;(&lt;/span&gt;most recent call first&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 &lt;span class="o"&gt;(&lt;/span&gt;_FPHSA_FAILURE_MESSAGE&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cmake/modules/FindSass.cmake:48 &lt;span class="o"&gt;(&lt;/span&gt;find_package_handle_standard_args&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; CMakeLists.txt:31 &lt;span class="o"&gt;(&lt;/span&gt;find_package&lt;span class="o"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is due to CMake not finding the executable named &lt;code&gt;sass&lt;/code&gt; (most likely a file &lt;code&gt;/usr/bin/sass&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;To solve this, you can specifically search for the executable in distribution packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian and derivatives: &lt;code&gt;apt-file search /usr/bin/sass&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fedora: &lt;code&gt;sudo dnf provides sass&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;openSUSE: &lt;code&gt;sudo zypper search --provides /usr/bin/sass&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Arch: &lt;code&gt;sudo pacman -F /usr/bin/sass&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;FreeBSD: &lt;code&gt;sudo pkg provides sass&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="d-flex align-items-center notecard notecard--info" role="alert"&gt;
&lt;span&gt;
&lt;p class="h4 mt-0"&gt;Configuring pkg-provides on FreeBSD&lt;/p&gt;&lt;details&gt;
&lt;summary&gt;Click here to set up pkg-provides on FreeBSD&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Once you run &lt;code&gt;pkg provides&lt;/code&gt;, if you face the error:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;makeinfo: not found WARNING: &lt;span class="s1"&gt;&amp;#39;makeinfo&amp;#39;&lt;/span&gt; is missing on your system.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This means you are missing the provides plugin:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pkg install pkg-provides&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Uncomment the following lines in &lt;code&gt;/usr/local/etc/pkg.conf&lt;/code&gt; and add &lt;code&gt;provides&lt;/code&gt; to the supported plugin list:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PKG_PLUGINS_DIR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;/usr/local/lib/pkg/&amp;#34;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PKG_ENABLE_PLUGINS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;true;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PLUGINS [ provides ];&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To confirm it is working:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre tabindex="0" class="chroma" style="margin-top: 0;
padding-top: 0.4em;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pkg plugins
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NAME DESC VERSION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# provides A plugin for querying which package provides a particular file 0.7.3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pkg provides -u
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pkg provides bin/makeinfo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Name : texinfo-7.0.3,1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Comment : Typeset documentation system with multiple format output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Repo : FreeBSD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Filename: usr/local/bin/makeinfo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pkg install texinfo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;/span&gt;
&lt;/div&gt;</description></item></channel></rss>