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

标签 c++ qt qmake

假设我有一个 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.onamespace2_someclass.o 之类的东西?

是的,我可以将我的类放到一个目录中,并将它们命名为 namespace1_someclass.cppnamespace2_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 版本。

来源:https://wiki.qt.io/Undocumented_QMake#Config_features

关于c++ - 为什么 qmake 将所有对象 (.o) 文件放到一个目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450225/

相关文章:

c++ - ffmpeg AVFrame 获取完整的解码数据到 char*

c++ - 痛饮 Perl : wrong ELF class

c++ - QIBASE 建立但未找到

c++ - 使用 resizeEvent 在调整窗口大小时调整 Qlabel 图像的大小

c++ - 如何使用 QMake 文件获取 Valgrind 的调试符号

c++ - Qt 5.3。 QtWidgets : No such file or directory #include <QtWidgets>

在运行时加载的 C++ 动态链接库 - Poco/qmake

c++ - OpenCV,我得到分割但找不到它

c++ - C++中枚举类型数据的大小是多少?

c++ - Qt - 当鼠标悬停在 QRect 对象上时弹出一个气泡