繁体   English   中英

如何在 Qt Cmake 项目中使用 QML_IMPORT_PATH?

[英]How to use QML_IMPORT_PATH with Qt Cmake Project?

我需要为项目提供一些模块。

现在,它在 QT 目录中查找它们(我已经将它安装在$HOME中),但我不想让它在/usr/lib/x86_64-linux-gnu/qt5/qml/中搜索。

我试过的:
a).bashrc中定义QML_IMPORT_PATH - 没有成功

b)$HOME/Qt5.5.1/Tools/QtCreator/bin/qml/中复制需要的模块:

在这里,我们有一些不同的东西。 如果我打开.qml文件 - 它不会强调import行(没关系)。 但是,如果我使用控制台运行可执行文件 - 相同的消息module org.bla.bla is not installed

所以,如果复制没有帮助,也许我不得不让 QtCreator(或其他)在适当的文件夹中搜索模块,但是如何呢?

更新。
好吧,您可以使用QML2_IMPORT_PATH定义模块的路径(不仅是QML ,还有QML2 )。 正如我上面提到的,我在$HOME/Qt5.5.1/Tools/QtCreator/bin/qml/中复制了模块文件夹,这是完全错误的! 正确的方法是将其复制到$QT_HOME/5.5/gcc_64/qml/中。 它现在运行良好,但我不能对它的“工作方式”说同样的话。 不幸的是,这与我提出的问题无关。 因此,我不会让别人回答我的问题,但也不会关闭它,直到找到真正的问题并在这里提及,这样我才能帮助别人。

使用即将推出的新 QtCreator 4.1,您将能够做到这一点。 只需在您的 CMake 缓存中设置QML_IMPORT_PATH 如果您有多个路径,请用;分隔它们。 这就是在 CMake 中完成列表的方式。

list(APPEND QML_DIRS "dir1")
list(APPEND QML_DIRS "dir2")
set(QML_IMPORT_PATH "${QML_DIRS}" CACHE STRING "Qt Creator 4.1 extra qml import paths")

这是对@Tom Deblauwe 的回答的改进,允许将特定于系统的本地设置保留在存储库的 makefile 之外。 它假设您使用 QT Creator 作为您的 IDE。

  1. 在 Qt Creator 中,打开“项目”侧边栏选项卡,然后转到“构建并运行 → [您的构建配置条目] → 构建 → CMake”。

  2. 在您找到的 CMake 配置设置列表中,根据您的系统设置设置QML_IMPORT_PATH的值。 多个目录用“ ; ”分隔。

  3. 您还可以在存储库的CMakeLists.txt makefile 中提供一些常见的默认值,以便具有常见设置的用户不需要设置他们的QML_IMPORT_PATH 下面的代码不会覆盖用户的QML_IMPORT_PATH而是附加到它。 您将以下内容添加到CMakeLists.txt

     # Directories where Qt Creator can find QML files. # (Not needed for builds, but makes Qt Creator code completion happy.) list(APPEND QML_IMPORT_PATH "/example/path/to/qml") list(APPEND QML_IMPORT_PATH "/second/example/path/to/qml") # Prevent adding duplicate values at each run of CMake. list(REMOVE_DUPLICATES QML_IMPORT_PATH) # The variable is cached in ${BUILD_DIR}/CMakeCache.txt. We need FORCE to # change it there immediately. Also, add a comment to the cache file. set(QML_IMPORT_PATH ${QML_IMPORT_PATH} CACHE STRING "Qt Creator 4.1 extra qml import paths" FORCE )
  4. 运行 CMake 后, QML_IMPORT_PATH现在是用户定义的值加上附加到它的一些CMakeLists.txt定义的值。 来自步骤 1-2 的 Qt Creator 的 CMake 配置设置仍将在表中显示用户的值。 但是当鼠标悬停在该值上时,包括的全部值。 附加部分显示在弹出窗口中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM