我正在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引擎的导入路径为:
我的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?