CMake Qt建立在Windows链接器问题之上

CMake Qt build on windows linker problems

本文关键字:问题 链接 Windows Qt 建立 CMake      更新时间:2023-10-16

我正在尝试从存储库构建和编译Qt项目。该项目包含一个 CMake 文件,我正在使用该文件构建然后使用 nmake 进行编译。但是,我在编译结束时遇到了一堆链接器错误,并且对 CMake 没有太多经验,所以不确定我哪里出错了。我正在使用 MSVC 14.11.25503。 CMakeList.txt在这里:

cmake_minimum_required(VERSION 3.6 FATAL_ERROR)
project(loggerGUI CXX)
set(TARGET ${CMAKE_PROJECT_NAME})
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
find_package(Qt5Bluetooth REQUIRED)
add_subdirectory(include/cpptoml)
add_subdirectory(include/qcustomplot)
add_subdirectory(include/easylogging++)
file(GLOB CPP_SOURCES
src/*.cpp)
file(GLOB HDR_SOURCES
src/*.h)
set(UI_SOURCES src/mainwindow.ui)
qt5_wrap_cpp(HDR_MOC ${HDR_SOURCES})
qt5_wrap_ui(UI_GENERATED_HEADERS ${UI_SOURCES})
add_executable(${TARGET} ${CPP_SOURCES} ${HDR_MOC} ${UI_GENERATED_HEADERS})
# generate proper GUI program on specified platform
if(WIN32) # Check if we are on Windows
if(MSVC) # Check if we are using the Visual Studio compiler
set_target_properties(${TARGET} PROPERTIES
WIN32_EXECUTABLE YES
LINK_FLAGS "/ENTRY:mainCRTStartup"
)
elseif(CMAKE_COMPILER_IS_GNUCXX)
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows") # Not tested
else()
message(SEND_ERROR "You are using an unsupported Windows compiler! (Not MSVC or GCC)")
endif(MSVC)
elseif(APPLE)
set_target_properties(${TARGET} PROPERTIES
MACOSX_BUNDLE YES
)
elseif(UNIX)
# Nothing special required
else()
message(SEND_ERROR "You are on an unsupported platform! (Not Win32, Mac OS X or Unix)")
endif(WIN32)
qt5_use_modules(${TARGET} Widgets PrintSupport Bluetooth)
target_link_libraries(${TARGET} cpptoml)
target_link_libraries(${TARGET} easylogging++)
target_link_libraries(${TARGET} qcustomplot)

我在运行 CMake 之前删除了我的构建文件夹,因此据我所知,通配应该不是问题。这是 nmake 输出的一部分(我无法将其全部放入,并且在某一点上它变得多余(:

[ 80%] Linking CXX executable loggerGUI.exe
mocs_compilation.cpp.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall ConnectionHandler::metaObject(void)const " (?metaObject@ConnectionHandler@@UBEPBUQMetaObject@@XZ) already defined in moc_connectionHandler.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual void * __thiscall ConnectionHandler::qt_metacast(char const *)" (?qt_metacast@ConnectionHandler@@UAEPAXPBD@Z) already defined in moc_connectionHandler.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual int __thiscall ConnectionHandler::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@ConnectionHandler@@UAEHW4Call@QMetaObject@@HPAPAX@Z) already defined in moc_connectionHandler.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "private: static void __cdecl ConnectionHandler::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@ConnectionHandler@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) already defined in moc_connectionHandler.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall Logger::metaObject(void)const " (?metaObject@Logger@@UBEPBUQMetaObject@@XZ) already defined in moc_logger.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual void * __thiscall Logger::qt_metacast(char const *)" (?qt_metacast@Logger@@UAEPAXPBD@Z) already defined in moc_logger.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual int __thiscall Logger::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Logger@@UAEHW4Call@QMetaObject@@HPAPAX@Z) already defined in moc_logger.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "private: static void __cdecl Logger::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@Logger@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) already defined in moc_logger.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall Plotter::metaObject(void)const " (?metaObject@Plotter@@UBEPBUQMetaObject@@XZ) already defined in moc_plotter.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual void * __thiscall Plotter::qt_metacast(char const *)" (?qt_metacast@Plotter@@UAEPAXPBD@Z) already defined in moc_plotter.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual int __thiscall Plotter::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Plotter@@UAEHW4Call@QMetaObject@@HPAPAX@Z) already defined in moc_plotter.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "private: static void __cdecl Plotter::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@Plotter@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) already defined in moc_plotter.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall SerialParser::metaObject(void)const " (?metaObject@SerialParser@@UBEPBUQMetaObject@@XZ) already defined in moc_serialParser.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual void * __thiscall SerialParser::qt_metacast(char const *)" (?qt_metacast@SerialParser@@UAEPAXPBD@Z) already defined in moc_serialParser.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual int __thiscall SerialParser::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@SerialParser@@UAEHW4Call@QMetaObject@@HPAPAX@Z) already defined in moc_serialParser.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "private: static void __cdecl SerialParser::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@SerialParser@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) already defined in moc_serialParser.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall Table::metaObject(void)const " (?metaObject@Table@@UBEPBUQMetaObject@@XZ) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual void * __thiscall Table::qt_metacast(char const *)" (?qt_metacast@Table@@UAEPAXPBD@Z) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual int __thiscall Table::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Table@@UAEHW4Call@QMetaObject@@HPAPAX@Z) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "private: static void __cdecl Table::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@Table@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: void __thiscall Table::graphToggled(class dataStream)" (?graphToggled@Table@@QAEXVdataStream@@@Z) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: void __thiscall Table::axisToggled(class dataStream)" (?axisToggled@Table@@QAEXVdataStream@@@Z) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual struct QMetaObject const * __thiscall loggerGUI::metaObject(void)const " (?metaObject@loggerGUI@@UBEPBUQMetaObject@@XZ) already defined in moc_loggerGUI.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual void * __thiscall loggerGUI::qt_metacast(char const *)" (?qt_metacast@loggerGUI@@UAEPAXPBD@Z) already defined in moc_loggerGUI.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: virtual int __thiscall loggerGUI::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@loggerGUI@@UAEHW4Call@QMetaObject@@HPAPAX@Z) already defined in moc_loggerGUI.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "private: static void __cdecl loggerGUI::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@loggerGUI@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) already defined in moc_loggerGUI.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: void __thiscall loggerGUI::newDataAvailable(void)" (?newDataAvailable@loggerGUI@@QAEXXZ) already defined in moc_loggerGUI.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: static struct QMetaObject const ConnectionHandler::staticMetaObject" (?staticMetaObject@ConnectionHandler@@2UQMetaObject@@B) already defined in moc_connectionHandler.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: static struct QMetaObject const Logger::staticMetaObject" (?staticMetaObject@Logger@@2UQMetaObject@@B) already defined in moc_logger.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: static struct QMetaObject const Plotter::staticMetaObject" (?staticMetaObject@Plotter@@2UQMetaObject@@B) already defined in moc_plotter.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: static struct QMetaObject const SerialParser::staticMetaObject" (?staticMetaObject@SerialParser@@2UQMetaObject@@B) already defined in moc_serialParser.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: static struct QMetaObject const Table::staticMetaObject" (?staticMetaObject@Table@@2UQMetaObject@@B) already defined in moc_table.cpp.obj
mocs_compilation.cpp.obj : error LNK2005: "public: static struct QMetaObject const loggerGUI::staticMetaObject" (?staticMetaObject@loggerGUI@@2UQMetaObject@@B) already defined in moc_loggerGUI.cpp.obj
moc_table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
qcustomplot.lib(mocs_compilation.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
config.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
moc_plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString const &)" (__imp_??0QString@@QAE@ABV0@@Z)
moc_table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
qcustomplot.lib(mocs_compilation.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
serialParser.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
moc_plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
config.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
connectionHandler.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
logger.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)
config.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString &&)" (__imp_??0QString@@QAE@$$QAV0@@Z) referenced in function "public: __thiscall dataStream::dataStream(class dataStream &&)" (??0dataStream@@QAE@$$QAV0@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(class QString &&)" (__imp_??0QString@@QAE@$$QAV0@@Z)
config.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString &&)" (__imp_??4QString@@QAEAAV0@$$QAV0@@Z) referenced in function "class std::vector<class dataStream,class std::allocator<class dataStream> > __cdecl readConfig(struct ConfigData &)" (?readConfig@@YA?AV?$vector@VdataStream@@V?$allocator@VdataStream@@@std@@@std@@AAUConfigData@@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString &&)" (__imp_??4QString@@QAEAAV0@$$QAV0@@Z)
qcustomplot.lib(mocs_compilation.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString &&)" (__imp_??4QString@@QAEAAV0@$$QAV0@@Z)
config.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QString __cdecl QString::fromStdString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?fromStdString@QString@@SA?AV1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "class std::vector<class dataStream,class std::allocator<class dataStream> > __cdecl readConfig(struct ConfigData &)" (?readConfig@@YA?AV?$vector@VdataStream@@V?$allocator@VdataStream@@@std@@@std@@AAUConfigData@@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(void)" (__imp_??0QString@@QAE@XZ)
connectionHandler.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(void)" (__imp_??0QString@@QAE@XZ)
logger.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(void)" (__imp_??0QString@@QAE@XZ)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(void)" (__imp_??0QString@@QAE@XZ)
plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(void)" (__imp_??0QString@@QAE@XZ)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString const &)" (__imp_??4QString@@QAEAAV0@ABV0@@Z) referenced in function "public: struct ConfigData & __thiscall ConfigData::operator=(struct ConfigData const &)" (??4ConfigData@@QAEAAU0@ABU0@@Z)
logger.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString const &)" (__imp_??4QString@@QAEAAV0@ABV0@@Z)
plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString const &)" (__imp_??4QString@@QAEAAV0@ABV0@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString const &)" (__imp_??4QString@@QAEAAV0@ABV0@@Z)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QMetaObject::Connection::~Connection(void)" (__imp_??1Connection@QMetaObject@@QAE@XZ) referenced in function "public: void __thiscall ConnectionHandler::setup(void)" (?setup@ConnectionHandler@@QAEXXZ)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QMetaObject::Connection::~Connection(void)" (__imp_??1Connection@QMetaObject@@QAE@XZ)
table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QMetaObject::Connection::~Connection(void)" (__imp_??1Connection@QMetaObject@@QAE@XZ)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QMetaObject::Connection::~Connection(void)" (__imp_??1Connection@QMetaObject@@QAE@XZ)
table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QObject::QObject(class QObject *)" (__imp_??0QObject@@QAE@PAV0@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QObject::QObject(class QObject *)" (__imp_??0QObject@@QAE@PAV0@@Z)
connectionHandler.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QObject::QObject(class QObject *)" (__imp_??0QObject@@QAE@PAV0@@Z)
logger.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QObject::QObject(class QObject *)" (__imp_??0QObject@@QAE@PAV0@@Z)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QObject::QObject(class QObject *)" (__imp_??0QObject@@QAE@PAV0@@Z)
plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QObject::QObject(class QObject *)" (__imp_??0QObject@@QAE@PAV0@@Z)
table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QObject::~QObject(void)" (__imp_??1QObject@@UAE@XZ)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QObject::~QObject(void)" (__imp_??1QObject@@UAE@XZ)
connectionHandler.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QObject::~QObject(void)" (__imp_??1QObject@@UAE@XZ)
logger.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QObject::~QObject(void)" (__imp_??1QObject@@UAE@XZ)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QObject::~QObject(void)" (__imp_??1QObject@@UAE@XZ)
plotter.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QObject::~QObject(void)" (__imp_??1QObject@@UAE@XZ)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) private: static class QMetaObject::Connection __cdecl QObject::connectImpl(class QObject const *,void * *,class QObject const *,void * *,class QtPrivate::QSlotObjectBase *,enum Qt::ConnectionType,int const *,struct QMetaObject const *)" (__imp_?connectImpl@QObject@@CA?AVConnection@QMetaObject@@PBV1@PAPAX01PAVQSlotObjectBase@QtPrivate@@W4ConnectionType@Qt@@PBHPBU3@@Z) referenced in function "public: static class QMetaObject::Connection __cdecl QObject::connect<void (__thiscall QBluetoothSocket::*)(void),class <lambda_582bb6fe4d5712728322f8f22541ba8e> >(class QBluetoothSocket const *,void (__thiscall QBluetoothSocket::*)(void),class QObject const *,class <lambda_582bb6fe4d5712728322f8f22541ba8e>,enum Qt::ConnectionType)" (??$connect@P8QBluetoothSocket@@AEXXZV<lambda_582bb6fe4d5712728322f8f22541ba8e>@@@QObject@@SA?AVConnection@QMetaObject@@PBVQBluetoothSocket@@P83@AEXXZPBV0@V<lambda_582bb6fe4d5712728322f8f22541ba8e>@@W4ConnectionType@Qt@@@Z)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) private: static class QMetaObject::Connection __cdecl QObject::connectImpl(class QObject const *,void * *,class QObject const *,void * *,class QtPrivate::QSlotObjectBase *,enum Qt::ConnectionType,int const *,struct QMetaObject const *)" (__imp_?connectImpl@QObject@@CA?AVConnection@QMetaObject@@PBV1@PAPAX01PAVQSlotObjectBase@QtPrivate@@W4ConnectionType@Qt@@PBHPBU3@@Z)
table.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) private: static class QMetaObject::Connection __cdecl QObject::connectImpl(class QObject const *,void * *,class QObject const *,void * *,class QtPrivate::QSlotObjectBase *,enum Qt::ConnectionType,int const *,struct QMetaObject const *)" (__imp_?connectImpl@QObject@@CA?AVConnection@QMetaObject@@PBV1@PAPAX01PAVQSlotObjectBase@QtPrivate@@W4ConnectionType@Qt@@PBHPBU3@@Z)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QBluetoothAddress::QBluetoothAddress(class QString const &)" (__imp_??0QBluetoothAddress@@QAE@ABVQString@@@Z) referenced in function "public: void __thiscall ConnectionHandler::setup(void)" (?setup@ConnectionHandler@@QAEXXZ)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QBluetoothAddress::~QBluetoothAddress(void)" (__imp_??1QBluetoothAddress@@QAE@XZ) referenced in function "public: void __thiscall ConnectionHandler::setup(void)" (?setup@ConnectionHandler@@QAEXXZ)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QBluetoothSocket::connectToService(class QBluetoothAddress const &,unsigned short,class QFlags<enum QIODevice::OpenModeFlag>)" (__imp_?connectToService@QBluetoothSocket@@QAEXABVQBluetoothAddress@@GV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z) referenced in function "public: void __thiscall ConnectionHandler::setup(void)" (?setup@ConnectionHandler@@QAEXXZ)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: enum QBluetoothSocket::SocketState __thiscall QBluetoothSocket::state(void)const " (__imp_?state@QBluetoothSocket@@QBE?AW4SocketState@1@XZ) referenced in function "public: void __thiscall <lambda_582bb6fe4d5712728322f8f22541ba8e>::operator()(void)const " (??R<lambda_582bb6fe4d5712728322f8f22541ba8e>@@QBEXXZ)
connectionHandler.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QBluetoothSocket::disconnected(void)" (__imp_?disconnected@QBluetoothSocket@@QAEXXZ) referenced in function "public: void __thiscall ConnectionHandler::setup(void)" (?setup@ConnectionHandler@@QAEXXZ)
table.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::childEvent(class QChildEvent *)" (?childEvent@QObject@@MAEXPAVQChildEvent@@@Z)
qcustomplot.lib(qcustomplot.cpp.obj) : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::childEvent(class QChildEvent *)" (?childEvent@QObject@@MAEXPAVQChildEvent@@@Z)
connectionHandler.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::childEvent(class QChildEvent *)" (?childEvent@QObject@@MAEXPAVQChildEvent@@@Z)
logger.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::childEvent(class QChildEvent *)" (?childEvent@QObject@@MAEXPAVQChildEvent@@@Z)
loggerGUI.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::childEvent(class QChildEvent *)" (?childEvent@QObject@@MAEXPAVQChildEvent@@@Z)
plotter.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::childEvent(class QChildEvent *)" (?childEvent@QObject@@MAEXPAVQChildEvent@@@Z)
table.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QObject::connectNotify(class QMetaMethod const &)" (?connectNotify@QObject@@MAEXABVQMetaMethod@@@Z)
loggerGUI.exe : fatal error LNK1120: 976 unresolved externals
LINK Pass 1 failed. with 1120

我解决了链接器问题,对路径进行硬编码

set(Qt5_DIR "E:/QT/5.15.2/msvc2019_64/lib/cmake/Qt5")
set(Qt5Core_DIR "E:/QT/5.15.2/msvc2019_64/lib/cmake/Qt5Core")
set(QT_QMAKE_EXECUTABLE "E:/QT/5.15.2/msvc2019_64/bin/qmake.exe")

此链接对我有用 https://github.com/KDAB/GammaRay/issues/213