我目前正在按照这个CMake体系结构构建一个极简的应用程序:
-root
-QmlModule
-Component1.qml
--Component2.qml
-附录1
-主.
-主
-附录2
-主.
-主
我使用"qt6_add_qml_module“作为静态库在"QmlModule”级别创建QML模块。
qt_add_library(myComponentTarget STATIC)
qt6_add_qml_module(myComponentTarget
URI QmlModule
VERSION 1.0
QML_FILES
Component1.qml
Component2.qml
RESOURCES
logo.png)
然后,在App1 (和App2)级别,使用"target_link_libraries“完成到模块的链接。"qt6_add_qml_module“在幕后做了一些工作,以便通过一个名为"your_component_URIplugin”的自动生成插件来公开模块。关于这个这里的更多细节。
add_executable(App1Exe
main.cpp)
qt6_add_qml_module(App1Exe
URI App1
VERSION 1.0
QML_FILES
main.qml)
target_link_libraries(App1Exe
PRIVATE
myComponentURIplugin)
在根级,我重载QML_IMPORT_PATH以便链接到构建文件夹并添加所有子目录。
set(QML_IMPORT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/qmlModule)
add_subdirectory(QmlModule)
add_subdirectory(App1)
add_subdirectory(App2)
我运行CMake,没有任何错误,并打开App1/main.qml文件。在我的import QmlModule
上,找不到模块:
模块"lupinComponentsplugin“未安装
如何使我的模块从我的应用程序可见?我错过了哪一步?
发布于 2022-11-28 14:37:03
CMake本身很好,这是一个运行时错误,而不是链接错误。
提出这个问题是因为QQmlApplicationEngine没有找到通向我模块QMLDIR的路径。最后,QQmlEngine中唯一缺少的是一个额外的导入路径":/“:
QQmlApplicationEngine engine;
engine.addImportPath(":/");
https://stackoverflow.com/questions/74549582
复制相似问题