You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Meson配置源/构建目录及指定bin路径的问题排查

Debian Bullseye编译KDE时WaylandProtocols及Meson配置问题

问题概述

  • 自行编译了满足版本要求的wayland-scanner,但Meson仍识别系统旧版本(1.18.0),导致WaylandProtocols编译失败(要求wayland-scanner >=1.20.0)。
  • 使用meson configure时指定源目录会触发警告,命令行参数被忽略,希望无需进入源或构建目录即可正确配置构建目录。

操作步骤

# 准备目录
sudo mkdir -p /opt/kde-desktop/{deps,app,etc}
sudo chown -R build: /opt/kde-desktop
mkdir -p ~/deps

# 安装libxslt依赖(wayland需要)
sudo apt install python3.9-dev
wget -O ~/deps/libxslt.tar.xz https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.37.tar.xz
tar -xvf ~/deps/libxslt.tar.xz
mv ~/deps/libxslt-* ~/deps/libxslt
rm -rf ~/deps/libxslt.tar.xz
mkdir -p ~/deps/libxslt-build
cd ~/deps/libxslt-build
../libxslt/configure --prefix=/opt/kde-desktop/deps
make -j$(nproc)
make install

# 安装xmlto(wayland需要)
apt install xmlto

# 编译wayland(WaylandProtocols依赖)
git clone https://gitlab.freedesktop.org/wayland/wayland.git ~/deps/wayland
export WLD=/opt/kde-desktop/deps
export LD_LIBRARY_PATH=$WLD/lib
export PKG_CONFIG_PATH=$WLD/etc
export PATH=$WLD/bin:$PATH
meson setup ~/deps/wayland ~/deps/wayland-build --prefix=$WLD --libdir=$LD_LIBRARY_PATH --sysconfdir=$PKG_CONFIG_PATH
ninja -C ~/deps/wayland-build
ninja -C ~/deps/wayland-build install
cd ..

# WaylandProtocols编译失败环节
latestWaylandProtocolsLink=$(curl -s https://gitlab.freedesktop.org/api/v4/projects/2891/releases/| jq -r '.[0].assets.sources[0].url')
waylandProtocolsRelease=$(curl -s https://gitlab.freedesktop.org/api/v4/projects/2891/releases/| jq -r '.[0].name')
wget -P ~/deps "$latestWaylandProtocolsLink"
unzip -d ~/deps ~/deps/wayland-protocols-"$waylandProtocolsRelease".zip
rm -rf ~/deps/wayland-protocols-"$waylandProtocolsRelease".zip
mv ~/deps/wayland-protocols-"$waylandProtocolsRelease" ~/deps/wayland-protocols
cd ~/deps/wayland-protocols
meson setup ~/deps/wayland-protocols ~/deps/wayland-protocols-build --prefix=/opt/kde-desktop/deps --libdir=/opt/kde-desktop/deps/lib --sbindir=/opt/kde-desktop/deps/bin
ninja -C build
ninja -C build install

错误信息

WaylandProtocols编译错误

$ meson setup ~/deps/wayland-protocols ~/deps/wayland-protocols-build --prefix=/opt/kde-desktop/deps --libdir=/opt/kde-desktop/deps/lib --bindir=/opt/kde-desktop/deps/bin
Using 'PKG_CONFIG_PATH' from environment with value: '/opt/wayland/etc'
Using 'PKG_CONFIG_PATH' from environment with value: '/opt/wayland/etc'
The Meson build system
Version: 0.56.2
Source dir: /home/build/deps/wayland-protocols
Build dir: /home/build/deps/wayland-protocols-build
Build type: native build
Project name: wayland-protocols
Project version: 1.31
Host machine cpu family: x86_64
Host machine cpu: x86_64
Configuring wayland-protocols.pc using configuration
Configuring wayland-protocols-uninstalled.pc using configuration
Program scan.sh found: YES (/home/build/deps/wayland-protocols/tests/scan.sh)
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Using 'PKG_CONFIG_PATH' from environment with value: '/opt/wayland/etc'
Dependency wayland-scanner found: NO found 1.18.0 but need: '>=1.20.0'
Found CMake: /usr/bin/cmake (3.18.4)
Build-time dependency wayland-scanner found: NO (tried cmake)

../home/build/deps/wayland-protocols/tests/meson.build:2:0: ERROR: Invalid version of dependency, need 'wayland-scanner' ['>=1.20.0'] found '1.18.0'.

A full log can be found at /home/build/deps/wayland-protocols-build/meson-logs/meson-log.txt

meson configure错误

~/deps/wayland-protocols $ meson configure --prefix=/opt/kde-desktop/deps ~/deps/wayland-protocols
WARNING: The source directory instead of the build directory was specified.
WARNING: Only the default values for the project are printed, and all command line parameters are ignored.

Core properties:
  Source dir /home/build/deps/wayland-protocols

解决方案

1. 修复wayland-scanner版本识别问题

问题原因

  • PKG_CONFIG_PATH设置错误:wayland编译后生成的.pc文件默认存放在$WLD/lib/pkgconfig,但你设置的是$WLD/etc,导致pkg-config无法识别自定义编译的wayland版本。
  • 环境变量可能未正确传递:执行WaylandProtocols编译时,之前设置的PATH等变量可能被覆盖或未生效。

修复步骤

  1. 修正环境变量,确保pkg-config和系统能找到自定义编译的wayland:
export WLD=/opt/kde-desktop/deps
export LD_LIBRARY_PATH="$WLD/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$WLD/lib/pkgconfig:$WLD/share/pkgconfig:$PKG_CONFIG_PATH"
export PATH="$WLD/bin:$PATH"
  1. 验证wayland-scanner版本:
wayland-scanner --version

确认输出版本≥1.20.0后,重新执行WaylandProtocols的构建命令:

meson setup ~/deps/wayland-protocols ~/deps/wayland-protocols-build --prefix="$WLD" --libdir="$WLD/lib" --bindir="$WLD/bin"
ninja -C ~/deps/wayland-protocols-build
ninja -C ~/deps/wayland-protocols-build install

2. 修复meson configure目录配置问题

问题原因

meson configure的正确用法是指定构建目录而非源目录,你之前指定源目录导致命令参数被忽略。

修复步骤

直接指定构建目录即可,无需进入源或构建目录:

meson configure ~/deps/wayland-protocols-build --prefix=/opt/kde-desktop/deps

如需修改其他参数,直接追加在命令后:

meson configure ~/deps/wayland-protocols-build --prefix=/opt/kde-desktop/deps --libdir=/opt/kde-desktop/deps/lib

内容的提问来源于stack exchange,提问作者saberlion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:53:10