KDEConnect/Build Windows: Difference between revisions

From KDE Community Wiki
No edit summary
No edit summary
Line 53: Line 53:




<pre>
<syntaxhighlight>
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/KDE/craft/master/setup/install_craft.ps1'))
iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/KDE/craft/master/setup/install_craft.ps1'))
</pre>
</syntaxhighlight>




Line 63: Line 63:
[[File:kdeconnect_win02.jpeg|INSTALLATION 1]]
[[File:kdeconnect_win02.jpeg|INSTALLATION 1]]


<pre>Select compiler
<syntaxhighlight>
Select compiler
[0] Mingw-w64, [1] Microsoft Visual Studio 2017, [2] Microsoft Visual Studio 2019 (default is Microsoft Visual Studio 2017): 2
[0] Mingw-w64, [1] Microsoft Visual Studio 2017, [2] Microsoft Visual Studio 2019 (default is Microsoft Visual Studio 2017): 2
Select architecture
Select architecture
[0] x86 [1] x64 (Default is x64): 1
[0] x86 [1] x64 (Default is x64): 1
</pre>
</syntaxhighlight>




Line 74: Line 75:
[[File:kdeconnect_win03.jpeg|env vars]]
[[File:kdeconnect_win03.jpeg|env vars]]


<pre>
<syntaxhighlight>
[Environment]
[Environment]
PATH=
PATH=
Line 82: Line 83:
ABI                  : windows-msvc2019_64-c1
ABI                  : windows-msvc2019_64-c1
Download directory  : C:\CraftRoot\download
Download directory  : C:\CraftRoot\download
</pre>
</syntaxhighlight>


== 1. BUILDING KDE CONNECT OUT OF LATEST SOURCE CODE==
== 1. BUILDING KDE CONNECT OUT OF LATEST SOURCE CODE==
Line 93: Line 94:




<pre>
<syntaxhighlight>


REM First, we set the various dependencies of kdeconnect-kde to be installed from the code in master branch.
REM First, we set the various dependencies of kdeconnect-kde to be installed from the code in master branch.
Line 126: Line 127:


craft -i kdeconnect-kde  
craft -i kdeconnect-kde  
</pre>
</syntaxhighlight>




Line 158: Line 159:


1. Now you can use the <code>--package</code> flag to build an installer. Run this in '''Craft CraftRoot'''.
1. Now you can use the <code>--package</code> flag to build an installer. Run this in '''Craft CraftRoot'''.
<pre>
<syntaxhighlight>
craft --package extragear/kdeconnect-kde
craft --package extragear/kdeconnect-kde
</pre>
</syntaxhighlight>


'''Note''': The output files are saved here: <code>C:\CraftRoot\tmp\</code>
'''Note''': The output files are saved here: <code>C:\CraftRoot\tmp\</code>
Line 176: Line 177:


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


</pre>
</syntaxhighlight>
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].
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].


Line 185: Line 186:


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:
<pre>
<syntaxhighlight>
craft --print-installed
craft --print-installed


</pre>
</syntaxhighlight>


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:
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:
<pre>
<syntaxhighlight>
cd download/git/extragear/kdeconnect-kde
cd download/git/extragear/kdeconnect-kde
git tag
git tag
Line 201: Line 202:
git log --since="May 19"
git log --since="May 19"


</pre>
</syntaxhighlight>




Line 209: Line 210:


At the <code>CraftRoot/</code> prompt, run these commands to update all the packages:
At the <code>CraftRoot/</code> prompt, run these commands to update all the packages:
<pre>
<syntaxhighlight>
craft --unmerge kde/frameworks; craft knotifications
craft --unmerge kde/frameworks; craft knotifications
craft --update  
craft --update  
craft --package kdeconnect-kde
craft --package kdeconnect-kde
</pre>
</syntaxhighlight>





Revision as of 23:08, 8 November 2019

Warning

This is an unfinished article


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]
  • Check out Craft docs for more help on how to use it.


0. SETTING UP ENVIRONMENT

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 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:-

MSVC (full-support) | MinGW-w64 (partial support)

0.1-A installing MSVC

1. Install Visual Studio 2019 (Community) from here and select Desktop development with C++.

2. Install these packages.

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 here.

2. While installing Craft, feel free to select Mingw-w64 as your compiler!

Afterwards, 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


Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/KDE/craft/master/setup/install_craft.ps1'))


2. During command 2, select Visual Studio 19 if you chose MSVC earlier, otherwise Mingw-w64 as your compiler.

INSTALLATION 1

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


3. When installation is done, note the Environment variables to match the ones in top of this image:-

env vars

[Environment]
PATH=

Craft                : C:\CraftRoot
Version              : master
ABI                  : windows-msvc2019_64-c1
Download directory   : C:\CraftRoot\download

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.


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

craft --set version=master kdeconnect-kde
craft --set version=master craft
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 kde/pim/kcontacts

REM Now we install kdeconnect-kde within CraftRoot.

craft -i kdeconnect-kde


2. TESTING CHANGES

TODO: Fill stuff here from Craft's documentation.


3. BUILDING A SHARE-ABLE INSTALLER

Choose your package of choice:-

.EXE Setup (full-support) | .Appx package for Windows Store (partial support)


3.1-A creating a desktop application .exe setup

0. Make sure PackageType is set as PackageType = NullsoftInstallerPackager in CraftRoot/etc/CraftSettings.ini.

1. To create an installable setup, you need NSIS- a open source system to create Windows installers. Install it by this command: craft nsis


install NSIS


3.1-B creating a Windows App .Appx package

0. Make sure PackageType is set as PackageType = AppxPackager in CraftRoot/etc/CraftSettings.ini.

3.2 packaging through Craft

1. Now you can use the --package flag to build an installer. Run this in Craft CraftRoot.

craft --package extragear/kdeconnect-kde

Note: The output files are saved here: C:\CraftRoot\tmp\

FAQs : FREQUENTLY ASKED QUESTIONS

We are only human! There are many doubts that we face commonly, during DevSprints and during onboarding of new contributors. We'd like to expedite this process for you by enlisting all the commonly asked questions in one place 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?

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


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

Just run this command:

C:\CraftRoot\bin\SnoreToast.exe -install "KDE Connect DEV" "C:/CraftRoot/bin/kdeconnectd.exe" "org.kde.kdeconnect.daemon"

A detailed explanation is available on my blog here and also in the code of SnoreToast backend for KNotifications here.

3. 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 current year is 2019)
git log --since="May 19"


4. I am unable to package KDE Connect for Windows. How to fix this?


At the CraftRoot/ prompt, run these commands to update all the packages:

craft --unmerge kde/frameworks; craft knotifications
craft --update 
craft --package kdeconnect-kde


5. 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! 😜