You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Qt Creator编译Linux项目报错:无目标规则/文件未找到

问题描述

此前仅用Qt Creator开发简单项目,现在在Windows系统上编译一个原本可在Linux运行的项目,遇到编译错误:

[...]
C:/Qt/Tools/mingw1310_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[4]: Entering directory 'C:/Users/dargaud/Desktop/PACIFICS/12-phases-sw/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/ipbus-sw/ipbus_lib/lib'
mingw32-make[4]: *** No rule to make target '/c/Users/dargaud/Desktop/PACIFICS/12-phases-sw/ipbus-sw/ipbus_lib/src/TIPbusClient.cpp', needed by 'debug/TIPbusClient.o'.  Stop.
mingw32-make[4]: Leaving directory 'C:/Users/dargaud/Desktop/PACIFICS/12-phases-sw/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/ipbus-sw/ipbus_lib/lib'
mingw32-make[3]: *** [Makefile:45: debug] Error 2

该错误在多个子项目中重复出现,最终还提示多个文件未找到:

WARNING: Failure to find: /c/Users/dargaud/Desktop/PACIFICS/12-phases-sw/ipbus-sw/ipbus_lib/src/TIPbusClient.h
WARNING: Failure to find: /c/Users/dargaud/Desktop/PACIFICS/12-phases-sw/ipbus-sw/ipbus_lib/src/packets.h
WARNING: Failure to find: /c/Users/dargaud/Desktop/PACIFICS/12-phases-sw/ipbus-sw/ipbus_lib/src/TIPbusPacket.h
WARNING: Failure to find: /c/Users/dargaud/Desktop/PACIFICS/12-phases-sw/ipbus-sw/ipbus_lib/src/TreqThread.h
WARNING: Failure to find: /c/Users/dargaud/Desktop/PACIFICS/12-phases-sw/ipbus-sw/amc_base/TAMC_base.h
WARNING: Failure to find: TIPbusClient.h

项目的.pro文件内容:

win32 {
 DEFINES = _WINDOWS _CRT_SECURE_NO_WARNINGS
 }
unix {
}
macx {
}

include(../src/ipbus_src_path.pri)

PROJECT =  ipbus
TEMPLATE = lib

QT += network
CONFIG += qt debug warn_on
INCLUDEPATH +=  .
INCLUDEPATH +=  ../src
DESTDIR = .

TARGET = ipbus
VERSION = 0.1.0

MOC_DIR      = moc
RCC_DIR      = resources
!debug_and_release {
    OBJECTS_DIR       = obj
}

HEADERS += 

SOURCES += 

疑问:是不是.pro文件缺少包含项,或是缺失Windows特定配置选项?

解决思路

1. 核心问题:.pro文件未添加源文件和头文件

你的.pro文件里HEADERS +=和SOURCES +=后面是空的,Qt的qmake无法生成这些文件的编译规则,自然找不到对应的目标文件。Linux上能编译,大概率是因为Linux下的构建脚本(比如Makefile、其他pri文件)自动包含了这些文件,但Windows下没有生效。

2. 检查pri文件是否生效

你引入了../src/ipbus_src_path.pri,先确认这个文件里有没有正确添加HEADERS和SOURCES的内容。如果这个pri文件是负责管理源文件路径的,可能在Windows下路径格式不兼容(比如用了Linux的斜杠或者相对路径错误),导致qmake没读到这些文件。

3. 手动补充源文件(临时验证)

可以先在.pro里手动添加缺失的文件,验证是否能编译:

HEADERS += ../src/TIPbusClient.h \
           ../src/packets.h \
           ../src/TIPbusPacket.h \
           ../src/TreqThread.h \
           ../amc_base/TAMC_base.h

SOURCES += ../src/TIPbusClient.cpp

注意路径要和实际文件位置匹配,Windows下Qt的qmake兼容正斜杠和反斜杠,不用特意转义。

4. Windows特定配置补充

目前你的win32块只加了两个宏定义,一般还需要注意:

  • 如果项目用到了POSIX API,需要添加DEFINES += _POSIX_C_SOURCE=200809L或者对应的兼容宏
  • 若有动态链接库导出需求,要添加DEFINES += IPBUS_LIBRARY(假设你的库导出宏是这个,需要和代码里的导出声明对应)
  • 检查INCLUDEPATH是否覆盖了所有头文件目录,比如../amc_base目前不在INCLUDEPATH里,需要加上:
INCLUDEPATH += ../amc_base

5. 清理重建项目

修改.pro后,一定要在Qt Creator里执行清理项目 -> qmake -> 构建项目,避免旧的Makefile缓存导致问题。

内容的提问来源于stack exchange,提问作者dargaud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:42:47