我很难将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。
发布于 2016-10-01 21:19:40
您没有实际链接到Qt库,因此得到了未定义的符号错误。宏、find_package和qt5_use_modules都只提供来自某些包/模块的CMake变量。你必须像这样链接图书馆:
target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core PUBLIC Qt5::Gui PUBLIC Qt5::Quick PUBLIC Qt5::Qml)https://stackoverflow.com/questions/39808193
复制相似问题