0
我有麻烦,包括QQmlEngine变成了cmake项目。QQmlEngine和cmake
这里是我的C++:
#include <QtQml/QQmlEngine>
...
QObject *someQObject;
QQmlEngine::setObjectOwnership(someQObject, QQmlEngine::ObjectOwnership::CppOwnership);
而且cmake的部分:
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)
编译失败:
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应用程序工作正常。因此它实际上以某种方式连接。
当我加你行我得到
"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 linux。
嗯..你能提供一些关于你的系统和你使用的Qt和CMake版本的更多信息吗?另外值得一试:你可以看看[这个CMake项目模板](https://github.com/qCring/QMLApplicationTemplate)来查看当你调用'QQmlEngine :: setObjectOwnership'时是否仍然发生错误。然后我们可以弄清楚它是CMake还是Qt问题。 – qCring