[英]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。
在 Qt Creator 中,打开“项目”侧边栏选项卡,然后转到“构建并运行 → [您的构建配置条目] → 构建 → CMake”。
在您找到的 CMake 配置设置列表中,根据您的系统设置设置QML_IMPORT_PATH
的值。 多个目录用“ ;
”分隔。
您还可以在存储库的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 )
运行 CMake 后, QML_IMPORT_PATH
现在是用户定义的值加上附加到它的一些CMakeLists.txt
定义的值。 来自步骤 1-2 的 Qt Creator 的 CMake 配置设置仍将在表中显示用户的值。 但是当鼠标悬停在该值上时,包括的全部值。 附加部分显示在弹出窗口中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.