gpt4 book ai didi

使用多个 .pri 文件的 Qt MOC 文件名冲突

转载 作者:行者123 更新时间:2023-12-04 02:53:34 29 4
gpt4 key购买 nike

为了让我的 Qt 项目有条理(使用 Qt Creator),我有一个 .pro 文件和多个 .pri 文件。就在最近,我在我的一个 .pri 文件中添加了一个类,该类与单独的 .pri 文件中已存在的类具有相同的文件名。

qmake 生成的文件结构和 makefile 似乎没有注意到随之而来的文件名冲突。生成的 moc_* 文件都被扔进同一个子目录(发布或调试,视情况而定)并且一个最终覆盖另一个。当我尝试制作该项目时,我收到了几个如下所示的警告:

Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`

并且该项目无法链接。

这是我正在谈论的一个简单的例子。

目录结构:
+ project_dir| + subdir1| | - file.h| | - file.cpp| + subdir2| | - file.h| | - file.cpp| - main.cpp| - project.pro| - subdir1.pri| - subdir2.pri

Contents of project.pro:

TARGET = project
TEMPLATE = app
include(subdir1.pri)
include(subdir2.pri)
SOURCES += main.cpp

subdir1.pri 的内容:
HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp

subdir2.pri 的内容:
HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp

有没有办法告诉 qmake 生成一个系统,将 moc_* 文件从单独的 .pri 文件放入单独的子目录?

最佳答案

subdir1.pri 尝试附加

MOC_DIR = "subdir1/MOCFiles"

也适用于 subdir2.pri
MOC_DIR = "subdir2/MOCFiles"

它没有经过测试。看看吧。希望它会起作用。

编辑 1 :其中 MOCFiles 是您想要进入的 moc 文件的文件夹。

编辑 2 :我只是停止提及 MOC 文件目录,因为在问题中已经特别询问了这一点。但另外,您可能还必须将以下内容添加到每个 pri 文件中。 (确保不同 *.pri 文件的文件夹不同)
RCC_DIR = "subdir1/RCCFiles"
UI_DIR = "subdir1/UICFiles"
OBJECTS_DIR = "subdir1/ObjFiles"

我相信有多个 pri 文件可以通过具有相同的文件名而不会发生冲突。既然你已经接受了一个答案(它表明这是不可能的),请进行上述更改并尝试一下。如果它不起作用,请告知。

关于使用多个 .pri 文件的 Qt MOC 文件名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959585/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com