Skip to content

編譯它


在 Linux 上從原始碼編譯 Kate

Kate 的原始碼目前位於 invent.kde.org 的 GitLab 實體上。這個教學會解釋如何編譯 Kate 而不影響您的全域安裝。

所有操作都會在一個額外建立的開發目錄中進行。這可以避免需要管理者權限,並且允許在目前編譯版本出問題時回去使用全域安裝的 Kate。

由於這個教學的設定也允許開發 KDE 軟體的其他部分,我們會在下方說明如何配置 KDE 開發環境。除了 Kate 應用程式部分以外,需要的 KDE Frameworks 框架等也會被編譯。這可以讓為 KDE 各層軟體進行貢獻都變得比較容易。

選擇您的 Kate 與 KDE 開發用的目錄

您可以自己決定 Kate 及 KDE 開發的東西全部應該要位於的資料夾。除了使用者本機設定檔案以外,這個目錄以外的任何檔案都不會被影響。您可以為其他 KDE 軟體使用同一個資料夾。

這個教學以下會假設開發目錄使用

~/projects/kde

不過您還是可以隨意選擇此目錄。

Install kdesrc-build

安裝基本上就是用 git 再製目前版本

mkdir -p ~/projects/kde/src
cd ~/projects/kde/src
git clone https://invent.kde.org/sdk/kdesrc-build.git

For later ease of use, best symlink the kdesrc-build script to some folder inside your path, e.g. if you have some user local bin:

ln -s ~/projects/kde/src/kdesrc-build/kdesrc-build ~/bin

Configuring kdesrc-build

kdesrc-build has some setup pass that can configure stuff for you, see this introduction.

以下是一個範例的 ~/.config/kdesrc-buildrc,足夠用來開發 Kate。

您可以就將以下設定檔案複製到家目錄底下的 ~/.config/kdesrc-buildrc 並依您的需求調整路徑。如果您也是使用上方選擇的 ~/projects/kde 路徑,這個設定應該會不需要調整。

global
    # 使用最新基於 KF6 和 Qt6 的軟體
    branch-group kf6-qt6

    # 我們要用 Ninja 和 .kateproject 檔案;關掉一些 Qt 5 的東西來減少依賴數量
    cmake-options -G "Kate - Ninja" -DBUILD_WITH_QT6=ON -DQT_MAJOR_VERSION=6 -DPHONON_BUILD_QT5=OFF -DBUILD_QT5=OFF

    # clangd 工具整合
    compile-commands-export yes
    compile-commands-linking yes

    # 扁平結構
    directory-layout flat

    # KDE 軟體的安裝目錄
    install-dir ~/projects/kde/usr

    # 下載下來的原始碼用的目錄
    source-dir ~/projects/kde/src

    # 在安裝到 source-dir 相對路徑前將 KDE 軟體編譯到的目錄
    build-dir ~/projects/kde/build
end global

include ${module-definitions-dir}/kf6-qt6.ksb

讓開發 Kate(或 KDE 其他東西)變得比較方便用的重要的行數在下面有詳細說明。

建立 .kateproject 檔案

# 我們要用 Ninja 和 .kateproject 檔案
cmake-options -G "Kate - Ninja"

這確保您不只會拿到 Ninja 編譯檔(Ninja 支援自動使用多核心編譯等等許多好處),同時也會在編譯目錄中拿到 .kateproject 檔案。Kate 的專案外掛程式可以利用這些檔案來得知編譯的原始目錄或是要把什麼編譯指令提供給編譯外掛程式。

確保專案中 LSP 整合能夠運作

# clangd 工具整合
compile-commands-export yes
compile-commands-linking yes

這確保 CMake 會產生 clangd 的 LSP 整合所需要的 compile_commands.json 檔案。除了在編譯目錄產生它們以外,compile-commands-linking 選項會將該檔案用符號連結放回原始碼目錄。這讓 Kate(或其他編輯器)能夠零設定註解開始使用 LSP。

安裝需要的相依關係(可選)

kdesrc-build provides some initial setup mode to install the needed packages for several common distributions to start developing. This is helpful if you are not sure if all needed development packages are installed on your system and you don't want to take care of this yourself manually. As this will try to install packages for your distribution, this step will require administrator rights for the package installation. To do that, just trigger:

kdesrc-build --initial-setup

We already created a .config/kdesrc-buildrc, that will be left untouched. For the further usage you don't need to modify your shell settings either.

編譯 Kate 和依賴關係

要進行 Kate 和所有需要的 KDE 依賴關係,請輸入:

kdesrc-build --include-dependencies kate

這在一台較新的電腦上通常會花幾分鐘。可以喝點茶並想想您要實作什麼。

在您的發行版沒有打包我們的依賴關係的 KF6 版本之前,您可能會想要編譯多一些部分來改善風格和終端機整合:

kdesrc-build --include-dependencies breeze plasma-integration kwayland-integration konsole kate

如果您只要編譯 Kate 而不要編譯依賴關係(因為您確定您的系統上已經有提供,且提供的版本夠新),可以試試看:

kdesrc-build --no-include-dependencies kate

但考量現代的電腦上編譯時間不用花多久,編譯全部可能會比較方便,來確保您取得最新的 KSyntaxHighlighting 和 KTextEditor 框架等等。

在這個情況,您可以使用這個簡單指令編譯所有 KDE 軟體部分:

kdesrc-build

請記得:這會花一些時間(和磁碟空間)。

如果編譯時您有看到任何以紅色字型顯示的失敗,請跟隨這個說明:如何解決編譯問題

要怎麽用剛編譯的東西?

要啟動本地編譯的 Kate 版本,您需要將環境正確設定來確保外掛程式等等東西能正確載入。幸運地,這不會很難:

source ~/projects/kde/build/kate/prefix.sh
kate

一個不錯的使用方式是自己建立一個包裝文稿來啟動您的本地 bin 目錄中的主分支版的 Kate:

#!/bin/bash
source ~/projects/kde/build/kate/prefix.sh
exec kate "$@"

維持您的東西更新到最新

要將本地版本更新到最新,只要再次使用上方的指令即可。它們會自己從 KDE 版本庫取得新的變更,並將它們編譯/安裝到本地目錄中。

開發!

現在,剩下的問題是:怎麽開發是最好的?

如果您要開發 Kate,使用 Kate 來開發它自己也是很自然的事。

有了上方的準備,這很簡單,只要開啟您的主分支版 Kate,然後給它 Kate 的編譯目錄:

kate ~/projects/kde/build/kate

另外一種方式,您也可以從終端機瀏覽到該目錄然後在裡面開啟 Kate,Kate 會自動開啟目前目錄:

cd ~/projects/kde/build/kate
kate

為了最好的體驗,請至少啟用專案和 LSP 外掛程式。如果您想要有圖形介面編譯整合,也可以啟用編譯外掛程式。

最後您會進到如下方的 Kate 新視窗。

在底部「目前專案」工具檢視您有預設的兩個終端機。第一個終端機位於您的編譯目錄中,在此可以執行 ninjaninja install 指令等等。第二個終端機位於您的原始碼目錄,可以執行 git 指令列。

使用上方設定,(假設有安裝 clangd 的話)LSP 外掛程式應該不用多做設定就會正常運作。

也可以啟用其他好用工具,像是專案內開啟、搜尋與取代,並且設定正確的編譯目標。

貢獻回來吧!

Feel free to create a merge request at invent.kde.org. For more information see Join Us.

取得支援?

If you have questions you can ask them on our mailing list kwrite-devel@kde.org and/or join #kate on irc.libera.chat.

更多資訊請見取得幫助

在 Linux 上從原始碼編譯 Windows

To build the KF5 based Kate/KWrite you can follow the guide on KDE on Windows.

在 Linux 上從原始碼編譯 macOS

To build the KF5 based Kate/KWrite you can follow the guide on KDE on macOS.