cmake 报错:
1 2 3 4 5 6 7 8 9 10
| ====================[ Build | QT | Debug ]====================================== /opt/clion/bin/cmake/linux/bin/cmake --build /home/peeweep/CLionProjects/QT/cmake-build-debug --target QT -- -j 8 [ 33%] Linking CXX executable QT /usr/bin/ld: CMakeFiles/QT.dir/mywidget.cpp.o: in function `myWidget': /home/peeweep/CLionProjects/QT/mywidget.cpp:6: undefined reference to `vtable for myWidget' clang-8: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [CMakeFiles/QT.dir/build.make:102: QT] Error 1 make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/QT.dir/all] Error 2 make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/QT.dir/rule] Error 2 make: *** [Makefile:118: QT] Error 2
|
这是因为在 mywidget.h 里使用了 Q_OBJECT
解决方法1: 生成对应的moc
1
| $ moc mywidget.h > mywidget.moc
|
然后在mywidget.cpp 里引用
解决方法2: 让CMake自动生成moc
CMakeLists.txt