qml - 从 nixpkgs 使用 qt5 时如何配置 QML 导入路径
问题描述
我正在 Ubuntu 18.04 上构建 QML 应用程序,并希望使用 nix(和 nixpkgs)设置我的开发环境。但是 QML 导入路径搞砸了。如果我运行应用程序,我会得到:
qrc:/main.qml:14 类型工具按钮不可用
file:///nix/store/013khcq6bcf1ln51wi6b2vk1xq2hx3ys-qtquickcontrols2-5.12.0-bin/lib/qt-5.12/qml/QtQuick/Controls.2/Material/qmldir:-1插件无法为模块“.nix.store加载.013khcq6bcf1ln51wi6b2vk1xq2hx3ys-qtquickcontrols2-5.12.0-bin.lib.qt-5.12.qml.QtQuick.Controls.Material”:
模块命名空间“QtQuick.Controls.Material”与导入 URI“.nix.store.013khcq6bcf1ln51wi6b2vk1xq2hx3ys-qtquickcontrols2-5.12.0-bin.lib.qt-5.12.qml.QtQuick.Controls.Material”不匹配
设置QML2_IMPORT_PATH
为/nix/store/013khcq6bcf1ln51wi6b2vk1xq2hx3ys-qtquickcontrols2-5.12.0-bin/lib/qt-5.12/qml/
解决问题,因此我认为我无法设置我的 nix-shell / 环境。
打印 QLibraryInfo::Qml2ImportsPath 产量/nix/store/fjxzlpc693gbkgbh1vi199jvzgrkps4j-qtbase-5.12.0/lib/qt-5.12/qml
和 QML 引擎的导入路径是:
- qrc:/qt-project.org/imports
- /nix/store/013khcq6bcf1ln51wi6b2vk1xq2hx3ys-qtquickcontrols2-5.12.0-bin/lib/qt-5.12/qml
- /nix/store/q02n0gycm1m2sqwzf4ccfysk8bh21jjq-user-environment/lib/qt-5.12/qml
- /nix/store/pf1ybjg0lh5y1rvalkdfw0axgd1dabpd-qtdeclarative-5.12.0-bin/lib/qt-5.12/qml
我的 shell.nix 看起来像这样:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
# this will make all the build inputs from hello and gnutar
# available to the shell environment
inputsFrom = with pkgs; [ ];
buildInputs = with pkgs; [ range-v3 boost fmt gbenchmark cmake ninja valgrind gcc gtest graphviz qt5.qtbase qt5.qtdeclarative ];
}
我已经用nix-shell shell.nix
和 试过了nix-shell --show-trace -E 'with import <nixpkgs> {}; libsForQt5.callPackage ./shell.nix { }'
。
如何在不设置 QML2_IMPORT_PATH 的情况下正确设置环境/nix-shell?
解决方案
推荐阅读
- ios - Flutter iOS 文本字符串在 2 个 Flutter 应用程序之间共享
- python - qt富文本标签页边距样式无效
- postgresql - 带有嵌套查询的 PostgreSQL 插入因大量行而失败
- tomcat - 仅在特定上下文路径中的 Tomcat 基本身份验证
- sql - 如何在 sqlite3 中将数据从一列移动到另一列
- python - Tensorboard 图像摘要
- spring - Spring Boot 2 - 一些 Graphite Metrics 没有从定制器接收公共标签
- java - 使用 GifSequenceWriter 将 BufferedImages 的 ArrayList 转换为 GIF 的问题 - Java
- android - Android Studio 为横向设置“下一个”文本视图
- php - 有没有办法将 php 与 mininet 一起使用,例如 test 使用 php 进行性能分析?