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等变量可能被覆盖或未生效。
修复步骤
- 修正环境变量,确保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"
- 验证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
相关产品推荐
相关产品推荐

