我有一个项目,其中一些文件夹恰好包含同名的源文件。
我的源代码树如下所示:
project.pro
foo/
conflict.h
conflict.cpp
bar/
conflict.h
conflict.cpp
some.h
other.h
files.h
main.cpp
默认情况下,qmake 会生成一个 Makefile,它会生成这样的构建树:
conflict.o
main.o
target
为和生成的conflict.o
目标文件在哪里?foo/conflict.cpp
foo/conflict.h
我不能更改它们的名称,因为它们是使用外部工具生成的,并且强制使用不同的文件名意味着更改它们的内容,所以这不是一个选项。
我也不想使用 qmakeSUBDIRS
模板,因为这意味着(1)每个子目录都是作为库单独构建的,因此整个构建过程非常复杂(至少在我看来)和(2)在顶层目录我不能有任何源文件。还是我错了?
我不能告诉 qmake 将目标文件写入构建目录中的单独目录吗?所以我的构建树看起来像这样:
foo/
conflict.o
bar/
conflict.o
main.o
target
或者是否有任何其他解决方案既不需要重命名源文件也不需要引入像静态库这样复杂的东西?我简直不敢相信 Qt 多年来都没有解决这个(在我看来很简单)问题。(我已经在 4 年前遇到过这个问题,但可以重命名该项目中的文件,而在这里我不能。)
如果它很重要:我在带有 G++ 的 Ubuntu 和带有 mingw32 的 Windows 上都使用 Qt 4.8。