如何在Qt Cmake项目中使用QML_IMPORT_PATH

How to use QML_IMPORT_PATH with Qt Cmake Project?

本文关键字:QML IMPORT PATH Qt Cmake 项目      更新时间:2023-10-16

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

现在,它在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。

  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的一些定义值。Qt Creator 在步骤 1-2 中的 CMake 配置设置仍将在表中显示用户的值。但是,当鼠标悬停在该值上时,包括附加部分在内的完整值将显示在弹出框中。