相关疑难解决方法(0)

为什么qmake将所有对象(.o)文件放在一个目录中?

假设我有一个Qt应用程序,我在两个不同的命名空间中有两个具有相同名称的类:

namespace namespace1
{
    class SomeClass;
}

namespace namespace2
{
    class SomeClass;
}
Run Code Online (Sandbox Code Playgroud)

我根据它有一个项目目录结构:

-->src/
  -->namespace1/
    -->someclass.cpp
  -->namespace2/
    -->someclass.cpp
Run Code Online (Sandbox Code Playgroud)

当我使用qmake编译应用程序时,它将所有对象(.o)文件放在一个目录中 - 所以它首先创建someclass.o文件然后用第二个someclass.o重写它- 这是一个名称冲突所以它很糟糕.

为什么qmake没有考虑源文件的目录结构?为什么它不会创建像namespace1_someclass.onamespace2_someclass.o这样的东西?

是的,我可以将我的类放到一个目录中,并将它们命名为namespace1_someclass.cppnamespace2_someclass.cpp,并且不会发生名称冲突,但这会在查看Qt Creator中项目资源管理器中的源文件时造成很少的不便,因为当有在项目中有很多源文件,它的可读性远远低于我可以展开或折叠的目录结构.

另一个极端是拥有如下目录结构:

-->src/
  -->namespace1/
    -->namespace1_someclass.cpp
  -->namespace2/
    -->namespace2_someclass.cpp
Run Code Online (Sandbox Code Playgroud)

它解决了名称冲突,但它冗余地复制了命名空间名称 - 因此再次不太可读.

为什么qmake至少没有根据源文件将目标文件放到目录结构中的选项?Qt的创造者不知道这是一个重要的特征吗?

还有一件事 - 你可以建议我使用cmake工具而不是qmake,但是我发现使用cmake 要比qmake 困难得多,而qmake到目前为止它的工作非常出色 - 除了对象文件的放置.

c++ qt qmake

24
推荐指数
2
解决办法
3961
查看次数

标签 统计

c++ ×1

qmake ×1

qt ×1