假设我有一个 Qt 应用程序,其中在两个不同的命名空间中有两个同名的类:
namespace namespace1
{
class SomeClass;
}
namespace namespace2
{
class SomeClass;
}
我有一个根据它的项目目录结构:
-->src/
-->namespace1/
-->someclass.cpp
-->namespace2/
-->someclass.cpp
当我使用 qmake 编译应用程序时,它会将所有对象 (.o) 文件放到一个目录中 - 所以它首先创建 someclass.o 文件,然后用第二个 重写它someclass.o - 这是一个名称冲突,所以很糟糕。
为什么 qmake 不考虑源文件的目录结构,为什么不创建 namespace1_someclass.o 和 namespace2_someclass.o 之类的东西?
是的,我可以将我的类放到一个目录中,并将它们命名为 namespace1_someclass.cpp 和 namespace2_someclass.cpp,这样就不会发生名称冲突,但这不会带来什么不便在 Qt Creator 的项目资源管理器中查看源文件时,因为当项目中有很多源文件时,它的可读性远低于我可以展开或折叠的 目录结构 .
一个更极端的目录结构是这样的:
-->src/
-->namespace1/
-->namespace1_someclass.cpp
-->namespace2/
-->namespace2_someclass.cpp
解决了名称冲突,但它重复命名空间名称 - 因此可读性再次降低。
为什么qmake至少没有根据源文件将目标文件放入目录结构的选项? Qt 的创造者没有看到这是一个重要的特性吗?
还有一件事 - 你可以推荐我使用 cmake 工具而不是 qmake 但我发现使用 cmake 要困难得多 比 qmake 和 qmake 到目前为止对我来说做得非常好 - 除了目标文件的放置。
最佳答案
您实际上可以使用以下方法将目标文件与源文件放在一起:
CONFIG += object_parallel_to_source
或
CONFIG += object_with_source
取决于您的 qmake 版本。
关于c++ - 为什么 qmake 将所有对象 (.o) 文件放到一个目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450225/