首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QQmlEngine和cmake

QQmlEngine和cmake
EN

Stack Overflow用户
提问于 2016-10-01 15:12:55
回答 1查看 627关注 0票数 0

我很难将QQmlEngine包含到cmake项目中。

这是我的C++:

代码语言:javascript
复制
#include <QtQml/QQmlEngine>
...
QObject *someQObject;
QQmlEngine::setObjectOwnership(someQObject, QQmlEngine::ObjectOwnership::CppOwnership);

而cmake部分:

代码语言:javascript
复制
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Qml REQUIRED)
find_package(Qt5Quick REQUIRED)
...
add_executable(name ${src})
qt5_use_modules(name Core Gui Qml Quick )

编译失败的有:

代码语言:javascript
复制
CMakeFiles/....cpp.o: In function `...':
....cpp:57: undefined reference to `QQmlEngine::setObjectOwnership(QObject*, QQmlEngine::ObjectOwnership)'
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)

我遗漏了什么?

编辑,@qCring (对不起,不能评论您的回答):

当我省略了"setObjectOwnership“电话的时候,一切都很好。Qt应用程序的其余部分运行良好。因此,它实际上是以某种方式连接起来的。

当我加上你的台词时,我得到

代码语言:javascript
复制
"The plain signature for target_link_libraries has already been used with the target "name".  All uses of target_link_libraries with a target   must be either all-keyword or all-plain."

编辑:

我的问题不知何故消失了。我正在x86_64上运行arch。

EN

回答 1

Stack Overflow用户

发布于 2016-10-01 21:19:40

您没有实际链接到Qt库,因此得到了未定义的符号错误。宏、find_packageqt5_use_modules都只提供来自某些包/模块的CMake变量。你必须像这样链接图书馆:

代码语言:javascript
复制
target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core PUBLIC Qt5::Gui PUBLIC Qt5::Quick PUBLIC Qt5::Qml)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39808193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档