qt - 使用 CONFIG += object_parallel_to_source 时,Qt qmake 不遵循源文件夹结构
问题描述
在 Qt Creator 中构建项目时,我希望(阴影)构建目录与我的源文件夹具有相同的文件夹结构。这可以通过 .pro 文件中的(未记录的)语句来完成:
CONFIG += object_parallel_to_source
“标准”*.cpp 文件被编译,对应的 *.o 文件被放置在正确的构建文件夹中。但是... moc和rcc将所有 moc_*.cpp 和 qrc_*.cpp 文件放在构建目录的顶层,而不是在相应的目录中。更糟糕的是:qmake 在指定的构建目录中再次创建完整的目录路径!!
一个例子会澄清它:说,你的来源(总结)是这样组织的:
/usr/share/myapps/project
|_ project.pro <= contains 'CONFIG += object_parallel_to_source'
|_ mainfolder
| |_ main.cpp
|_ subfolder1
| |_ class1_no_QOBJECT.cpp
| |_ class2_with_QOBJECT.cpp
|_ subfolder2
|_ class3_no_QOBJECT.cpp
|_ resources.qrc
并且构建目录在 Qt Creator 中指定
/usr/share/myapps/build
运行 qmake 和 make 会产生以下构建文件夹结构
/usr/share/myapps/build
|_ mainfolder
| |_ main.o
|_ subfolder1
| |_ class1_no_QOBJECT.o
|_ subfolder2
| |_ class3_no_QOBJECT.o
|_ moc_class2_with_QOBJECT.cpp <- should be in subfolder1
|_ qrc_resources.cpp <- should be in subfolder2
|_ usr
|_ share
|_ myapps
|_build
|_ moc_class2_with_QOBJECT.o <- should be in subfolder1
|_ qrc_resources.o <- should be in subfolder2
有没有办法防止文件夹结构翻倍?
我在 Ubuntu 18.04 上使用 Qt 5.9.1(因为这是由硬件供应商安装的 - 嵌入式 Linux)
编辑:我检查了由 qmake 创建的 Makefile。指定放置对象的行应该是
OBJECTS = /path/to/objects/<filename>.o
但实际上缺少前导反斜杠
OBJECTS = path/to/objects/<filename>.o
这是文件夹结构翻倍的根本原因。
qmake 中的错误?
解决方案
推荐阅读
- python - Python 在运行函数后不会更改布尔值
- swift - SwiftUI - ForEach 删除转换始终仅应用于最后一项
- javascript - 如何将包含合并单元格的表格从excel复制并粘贴到网页?
- java - 如何使用 push() 方法在字符串中插入整数
- z3 - Z3Py:如何以最有效的方式实现和约束位向量 LUT 的输入
- typescript - AWS lambda:如何在 serverless.ts 文件(Typescript)中使用 AWS ssm
- javascript - 如何将 navigator.geolocation 存储为变量的字符串?
- datadog - 无需重复计数即可分解 Datadog COUNT/GAUGE
- c - 讨论进程地址空间的字符串部分时提到的对齐方式是什么
- javascript - Top.gg 投票网络钩子