KDEConnect/Build Windows: Difference between revisions

From KDE Community Wiki
No edit summary
Line 1: Line 1:
Craft is an open source meta build system and package manager. It manages dependencies and builds libraries and applications from source, on Windows, Mac, Linux and FreeBSD.
Visit [https://community.kde.org/Craft here] for more information about Craft.


 
The development environment is contained within the directory, called '''CraftRoot''' by default, so feel free to experiment with the Craft installation.
 
== X. DEVELOPER RECOMMENDATIONS ==
In case you get stuck, check out these recommendations for the build process.
 
* As a developer you'd naturally want to be able to test out all the features offered by KDE Connect. Right now '''MSVC does the best job as a compiler''' for KDE Connect for Windows, so you may choose that.
* We recommend to '''install Craft in '''C:/''' [default]''' as the guide uses '''C:/''' as the installation directory.
* Check out [https://community.kde.org/Craft Craft docs] for more help on how to use it.


<div class="noautonum">__TOC__</div>
<div class="noautonum">__TOC__</div>




== 0. SETTING UP ENVIRONMENT ==
= Configure the dependencies =
The environment for KDE Connect on Windows simply consists of two parts- A compiler of choice and a build system. While we do have a couple of options for the compiler, our recommended build system is [https://community.kde.org/Craft Craft]. While this is an all-in-one build guide, you should definitely refer to Craft's documentation for further information on using the build system in your development environment!
 
=== Choose your compiler of choice ===
<p align = "center"> [https://community.kde.org/KDEConnect/Build_Windows#0.1-A_installing_MSVC '''MSVC'''] (full-support) | [https://community.kde.org/KDEConnect/Build_Windows#0.1-B_installing_MinGW-w64 '''MinGW-w64'''] (partial support) </p>
 
==== 0.1-A installing MSVC ====
 
1. Install Visual Studio 2019 (Community) from [https://visualstudio.microsoft.com/downloads/ '''here'''] and select '''Desktop development with C++'''.
 
2. Install these packages.
 
[[File:kdeconnect_win01.jpeg | Select these components]]
 
** Just-in-Time debugger
** VC++ 2019 version
** C++ profiling tools
** Windows 10 SDK
** Visual C++ tools for CMake
** Visual C++ ATL for x86 and x64
** Test Adapter for Boost.Test
** Test Adapter for Google Test
 
==== 0.1-B installing MinGW-w64 ====
 
1. Install MinGW-w64 through the GUI installer located [http://www.mingw.org/wiki/Getting_Started here].
 
2. While installing Craft, feel free to select '''Mingw-w64''' as your compiler!
 
Afterward, there is no difference in the commands used in the development.
Note that due to the lacking of some definitions in MinGW provided header file, some plugins could not be compiled with all functions on Windows using MinGW.
 
'''This is still an experimental feature, and you might need some developer know-how to get past any build problems.'''
 
 
=== 0.2 installing Craft ===
 
1. Call the following commands in a Powershell window with ''Administrator Privileges''
 
 
<syntaxhighlight lang="powershell">
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/KDE/craft/master/setup/install_craft.ps1'))
</syntaxhighlight>
 
 
2. During command 2, select '''Visual Studio 19''' if you chose MSVC earlier, otherwise '''Mingw-w64''' as your compiler.
 
[[File:kdeconnect_win02.jpeg|INSTALLATION 1]]
 
<syntaxhighlight lang="powershell">
Select compiler
[0] Mingw-w64, [1] Microsoft Visual Studio 2017, [2] Microsoft Visual Studio 2019 (default is Microsoft Visual Studio 2017): 2
Select architecture
[0] x86 [1] x64 (Default is x64): 1
</syntaxhighlight>
 
 
3. When the installation is done, note the Environment variables to match the ones in the top of this image:-
 
[[File:kdeconnect_win03.jpeg|env vars]]
 
<syntaxhighlight lang="powershell">
[Environment]
PATH=
 
Craft                : C:\CraftRoot
Version              : master
ABI                  : windows-msvc2019_64-c1
Download directory  : C:\CraftRoot\download
</syntaxhighlight>
 
== 1. BUILDING KDE CONNECT OUT OF LATEST SOURCE CODE==
 
Craft has automated most of the redundant parts of the build process and exposed just the really useful parameters like ''which version to build'', ''where to install'' ''et al''.
 
1. Open '''Craft CraftRoot''' from search (in taskbar).
 
2. Run the following commands now.


Run the following commands now.


<syntaxhighlight lang="sh">
<syntaxhighlight lang="sh">
Line 100: Line 18:
craft --set version=master craft
craft --set version=master craft
craft --set version=master kirigami
craft --set version=master kirigami
craft --set version=master attica
craft --set version=master kde/frameworks/tier3
craft --set version=master kde/frameworks/tier3
craft --set version=master dev-utils/snoretoast
craft --set version=master dev-utils/snoretoast
Line 128: Line 47:
craft --set version=master breeze-icons
craft --set version=master breeze-icons
craft --set version=master kconfigwidgets
craft --set version=master kconfigwidgets
</syntaxhighlight>
= Build/install KDE Connect =
Run the following commands now:
<syntaxhighlight lang="sh">


# Now we install kdeconnect-kde within CraftRoot.
# Now we install kdeconnect-kde within CraftRoot.
Line 141: Line 69:
</syntaxhighlight>
</syntaxhighlight>


3. To enable callbacks for the Windows notifications, run this command from within the same terminal.


<syntaxhighlight>
= Build with changes to code =
C:/CraftRoot/bin/snoretoast.exe -install "KDE Connect DEV" "C:/CraftRoot/bin/kdeconnectd.exe" "kdeconnect.daemon"
</syntaxhighlight>
 
== 2. TESTING CHANGES ==


Once you make some changes, simply run <br/>
Remember the source code for kdeconnect-kde is accessible via <code>cs kdeconnect-kde</code>.
Once you make some changes, run:


<syntaxhighlight lang="sh">
<syntaxhighlight lang="sh">
Line 155: Line 79:
</syntaxhighlight>
</syntaxhighlight>


This will update the kdeconnect-kde package installed within $CraftRoot.


This will update the kdeconnect-kde package installed within $CraftRoot to reflect latest changes in the
Warning: Do not run <code>craft -i kdeconnect-kde</code> ! This command overwrites the installation with a build of kdeconnect-kde from master branch.
kdeconnect-kde repository. (Accessible via <code>cs kdeconnect-kde</code>)
 
Warning: Do not run <code>craft -i kdeconnect-kde</code> ! This command changes the current branch to master in the codebase.
 
== 3. BUILDING A SHARE-ABLE INSTALLER ==
 
Choose your package of choice:-
<p align = "center"> [https://community.kde.org/KDEConnect/Build_Windows#3.1-A_creating_a_desktop_application_.exe_setup '''.EXE Setup'''] (full-support) | [https://community.kde.org/KDEConnect/Build_Windows#3.1-B_creating_a_Windows_App_.Appx_package '''.Appx package for Windows Store'''] (partial support) </p>
 
 
 
=== 3.1-A creating a desktop application <code>.exe</code> setup ===
 
0. Make sure PackageType is set as <code>PackageType = NullsoftInstallerPackager</code> in <code>CraftRoot/etc/CraftSettings.ini</code>.
 
1. To create an installable setup, you need [https://sourceforge.net/projects/nsis/ '''NSIS- a open source system to create Windows installers''']. Install it by this command: <code>craft nsis</code>
 
 
[[File:kdeconnect_win04.jpeg|install NSIS]]
 
 
=== 3.1-B creating a Windows App <code>.Appx</code> package ===
 
0. Make sure PackageType is set as <code>PackageType = AppxPackager</code> in <code>CraftRoot/etc/CraftSettings.ini</code>.
 
=== 3.2 packaging through Craft ===
 
1. Now you can use the <code>--package</code> flag to build an installer. Run this in '''Craft CraftRoot'''.
<syntaxhighlight lang="sh">
craft --package extragear/kdeconnect-kde
</syntaxhighlight>
 
'''Note''': The output files are saved here: <code>C:\CraftRoot\tmp\</code>
 
== FAQs : FREQUENTLY ASKED QUESTIONS ==
 
We are only human! There are many questions that we face commonly, during DevSprints and during the onboarding of new contributors. Just skim through all the commonly asked questions so you don't have to ask around like others had to.


'''1. I see double plugins in my KDE Connect installation. How do I fix it?'''
Visit [https://community.kde.org/Craft here] for more information about Craft.


Just rename your <code>CraftRoot/</code> folder to something different. Even <code>CraftRoot1/</code> will work! Applications packaged by Craft look in <code>CraftRoot/</code> for the plugins first and then into their own installation folder.


= Using an IDE =
Multiple IDEs have been tested to work quite well with Craft. To see available guides, click [https://community.kde.org/Craft#Using_Craft_with_an_IDE here].


'''2. I don't get the notification buttons, and the application name in the notifications is weird (something like <code>kdeconnect.daemon</code>. How do I fix it?'''


Just run this command:
= FAQs =
<syntaxhighlight lang="dosbatch">
C:\CraftRoot\bin\SnoreToast.exe -install "KDE Connect DEV" "C:/CraftRoot/bin/kdeconnectd.exe" "org.kde.kdeconnect.daemon"


</syntaxhighlight>
We are only human! There are many questions that we face commonly, during DevSprints and during the onboarding of new contributors.  
A detailed explanation is available on my blog [https://journal.piyush.tech/gsoc_milestone_1/ here] and also in the code of SnoreToast backend for KNotifications [https://cgit.kde.org/knotifications.git/tree/src/notifybysnore.cpp#n32 here].
Just skim through all the commonly asked questions so you don't have to ask around like others had to.


'''3. What versions of packages did I just install? What version of KDE Connect did I just build?'''
# ''' What versions of packages did I just install? What version of KDE Connect did I just build?'''


At the <code>CraftRoot/</code> prompt, to see the catalog of installed packages, run this command:
At the <code>CraftRoot/</code> prompt, to see the catalog of installed packages, run this command:
Line 231: Line 117:




'''4. I am unable to package KDE Connect for Windows. How to fix this?'''
# '''How can I contact the KDE Connect team? I'd like to talk to the team about an issue/ suggestion.'''
 
[[File:Error.png | thumb]]
 
At the <code>CraftRoot/</code> prompt, run these commands to update all the packages:
 
<syntaxhighlight lang="sh">
craft --unmerge kde/frameworks; craft knotifications
craft --update
craft --package kdeconnect-kde
</syntaxhighlight>
 
 
 
'''5. How can I contact the KDE Connect team? I'd like to talk to the team about an issue/ suggestion.'''


* Telegram: You can find a link to our Telegram group [https://community.kde.org/Telegram here].
* Telegram: You can find a link to our Telegram group [https://community.kde.org/Telegram here].
Line 253: Line 125:




''Be sure to tell us if you got stuck somewhere in the process of setting up the developer environment. You can [mailto:[email protected] mail us.] Yes we read the mails!''
''Be sure to tell us if you got stuck somewhere in the process of setting up the developer environment. You can [mailto:[email protected] mail us]. Yes, we read the mails!''

Revision as of 01:47, 20 July 2021

Craft is an open source meta build system and package manager. It manages dependencies and builds libraries and applications from source, on Windows, Mac, Linux and FreeBSD. Visit here for more information about Craft.

The development environment is contained within the directory, called CraftRoot by default, so feel free to experiment with the Craft installation.


Configure the dependencies

Run the following commands now.

# First, we set the various dependencies of kdeconnect-kde to be installed from the code in the master branch.

craft --set version=master kdeconnect-kde
craft --set version=master craft
craft --set version=master kirigami
craft --set version=master attica
craft --set version=master kde/frameworks/tier3
craft --set version=master dev-utils/snoretoast
craft --set version=master kde/frameworks/tier1/sonnet
craft --set version=master libs/libssh2
craft --set version=master kde/frameworks/tier3/kio
craft --set version=master kde/kdenetwork/kio-extras
craft --set version=master kde/frameworks/tier1/kcoreaddons
craft --set version=master kde/frameworks/tier2/kauth
craft --set version=master kde/frameworks/extra-cmake-modules
craft --set version=master kde/frameworks/tier1/kwindowsystem
craft --set version=master kde/frameworks/tier1/kconfig
craft --set version=master kde/frameworks/tier1/kcodecs
craft --set version=master kde/frameworks/tier1/kwidgetsaddons
craft --set version=master kde/frameworks/tier1/kitemviews 
craft --set version=master kde/frameworks/tier1/kguiaddons 
craft --set version=master kde/frameworks/tier2/kcrash 
craft --set version=master kde/frameworks/tier1/kdbusaddons 
craft --set version=master kde/frameworks/tier2/kdoctools 
craft --set version=master kde/frameworks/tier1/karchive 
craft --set version=master kde/frameworks/tier2/kcompletion 
craft --set version=master kde/frameworks/tier3/kiconthemes 
craft --set version=master kde/frameworks/tier1/solid 
craft --set version=master kcontacts
craft --set version=master ki18n
craft --set version=master kjobwidgets
craft --set version=master kpackage
craft --set version=master breeze-icons
craft --set version=master kconfigwidgets


Build/install KDE Connect

Run the following commands now:

# Now we install kdeconnect-kde within CraftRoot.

craft -i kdeconnect-kde 

# Get qtbase source for debugging

craft --fetch --unpack libs/qt5/qtbase

# If everything went fine, you're ready!


Build with changes to code

Remember the source code for kdeconnect-kde is accessible via cs kdeconnect-kde. Once you make some changes, run:

craft --compile --install --qmerge kdeconnect-kde

This will update the kdeconnect-kde package installed within $CraftRoot.

Warning: Do not run craft -i kdeconnect-kde ! This command overwrites the installation with a build of kdeconnect-kde from master branch.

Visit here for more information about Craft.


Using an IDE

Multiple IDEs have been tested to work quite well with Craft. To see available guides, click here.


FAQs

We are only human! There are many questions that we face commonly, during DevSprints and during the onboarding of new contributors. Just skim through all the commonly asked questions so you don't have to ask around like others had to.

  1. What versions of packages did I just install? What version of KDE Connect did I just build?

At the CraftRoot/ prompt, to see the catalog of installed packages, run this command:

craft --print-installed

The KDE Connect version will be based on the latest git commit in the repository. To see what is the latest release (latest tag) and any commits since the release, run these commands:

cd download/git/extragear/kdeconnect-kde
git tag
git log --tags
echo notice the commit date for the latest tag.
echo release v1.3.5 commit date is "May 19 2019"
echo the following will show all the commits since release v1.3.5
echo (assuming the current year is 2019)
git log --since="May 19"


  1. How can I contact the KDE Connect team? I'd like to talk to the team about an issue/ suggestion.


Be sure to tell us if you got stuck somewhere in the process of setting up the developer environment. You can mail us. Yes, we read the mails!