如何在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(或smth(在适当的文件夹中搜索模块,但是如何呢?
上。
好吧,您可以使用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 创建器作为您的 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
的一些定义值。Qt Creator 在步骤 1-2 中的 CMake 配置设置仍将在表中显示用户的值。但是,当鼠标悬停在该值上时,包括附加部分在内的完整值将显示在弹出框中。
- 从C++实例化QML
- 使用CMake创建QML插件
- QT通过C++添加映射QML项目
- 如何在没有信号的情况下从C++执行QML插槽
- QML按钮点击功能执行顺序
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 建议在运行时将带有类实例的列表从c++导入qml
- Qt Quick-如何仅从c++代码与qml属性交互
- 如何将带有自定义对象的容器从C++传递到QML
- QML 使用带有参数C++函数
- 最佳做法是从另一个线程访问 qml 中的Q_PROPERTY
- 如何从C++端挂接到 QML 项的 onClick 事件
- 在 qml 中使用 Q_ENUM 和 Q_PROPERTY 作为枚举类
- 从C++更改 QML 图像源
- QML TableView 使用 QtQuick.Controls 2 单击行
- 如何多次询问来自QML对话框的输入?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 阅读 QML 中结构C++ QVector 的 QVector
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- Qt QML桌面应用程序自动化测试