qt cmake 每次重新生成的include 内的文件,必然 ui_xxx.h的文件都不包含我添加的文件夹结构,比如我需要把#include “brokenlinemap.h“换成#include

在 Qt 中,当使用 uic(User Interface Compiler)从 .ui 文件生成 ui_xxx.h 头文件时,通常不会包含你的项目文件夹结构,因为 uic 不知道你的源代码布局。ui_xxx.h 文件中的包含路径是相对于生成的 ui_xxx.h 文件位置来决定的。

如果你需要将 #include "brokenlinemap.h" 替换为 #include "../../../../views/mains/brokenlinemap.h",说明你的项目文件结构可能和 Qt 默认的包含路径不匹配。这通常发生在复杂的项目结构中,其中源文件分布在多个子目录中。

为了解决这个问题,你可以尝试以下几种方法:

  1. 调整项目结构
    尽量保持一个简单的项目结构,使得 Qt 的工具链可以自动处理包含关系。如果可能,将相关的头文件移动到更靠近生成的 ui_xxx.h 文件的位置。

  2. 使用 Qt 的 INCLUDEPATH
    在 Qt 的 .pro 文件中,你可以设置 INCLUDEPATH 来指定额外的包含目录。这样,uic 在生成 ui_xxx.h 时可能会使用这些路径。例如:

    INCLUDEPATH += $$PWD/views/mains
  3. 手动修改生成的 ui_xxx.h
    这不是一个推荐的做法,因为它需要在每次重新生成 ui_xxx.h 后手动修改。但如果其他方法都不可行,你可以考虑在构建过程中添加一个脚本来自动替换包含路径。

  4. 使用相对路径或别名
    在你的源代码中,尽量使用相对路径来包含头文件,或者在你的构建系统中定义别名,这样你就可以使用简短的别名来代替长的相对路径。

  5. CMake 配置
    如果你是在 CMake 中配置 Qt 项目,确保正确设置了 AUTOUICAUTOMOC 和 AUTORCC,并且正确配置了包含路径。例如:

    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/views/mains)
  6. 考虑项目布局
    重新考虑你的项目文件和文件夹布局,以确保它们与 Qt 的构建系统和工具链兼容。有时,重构项目结构以更好地适应工具链是值得的。

  7. 使用绝对路径
    虽然不推荐使用绝对路径,因为它们会使项目与特定机器或环境紧密耦合,但在某些情况下,使用绝对路径可能是快速解决问题的办法。

总的来说,最好的解决方案是调整项目结构或使用 Qt 的 INCLUDEPATH 来确保 uic 可以找到正确的头文件。这样可以避免在每次重新生成 ui_xxx.h 文件后都需要手动修改。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值