ASAP(自动化切片分析平台)编译出现Qt未定义引用错误如何解决
问题根因
ASAP采用CMake作为构建系统,而非qmake,因此修改.pro文件的方案完全不适用。当前报错属于链接阶段错误,本质是构建脚本未将Qt Core、Gui、Widgets三个模块的库文件链接到最终的ASAP可执行目标上,即使你本地已经配置了Qt环境,CMake也没有把依赖关系关联起来。
修复步骤
- 第一步:打开项目根目录下的
CMakeLists.txt文件,先确认已经添加查找Qt依赖的语句,根据你使用的Qt版本添加对应代码:
Qt5版本添加:
Qt6版本添加:find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets)find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) - 第二步:在
CMakeLists.txt中找到add_executable(ASAP 你的源文件列表)这一行,在该行之后添加链接Qt库的配置:
Qt5版本添加:
Qt6版本添加:target_link_libraries(ASAP PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)target_link_libraries(ASAP PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets) - 第三步:删除本地已经生成的
cmake-build-debug旧构建缓存目录,重新启动CLion触发CMake重新配置、生成构建脚本后,再次执行编译即可。
异常排查
如果完成上述操作后仍报错,按以下顺序检查:
- 确认CLion中配置的Qt版本和你在CMake中指定的版本完全一致,不要混用Qt5和Qt6
- 确认你使用的编译器与Qt库的编译编译器匹配,你当前用的是MinGW编译项目,必须使用对应MinGW版本编译的Qt库,不能使用MSVC编译的Qt版本
- 确认程序位数与Qt库位数匹配,32位程序对应32位Qt库,64位程序对应64位Qt库
内容的提问来源于stack exchange,提问作者Xifeng
相关产品推荐
相关产品推荐

