Qt Creator 自动生成的垃圾(文件)的用途是什么以及如何驯服它们?

2023-12-25

我对 Qt 相当陌生,我正在使用新的诺基亚 Qt SDK beta,并且我正在空闲时间为我的诺基亚 N900 开发一个小型应用程序。幸运的是,我能够正确设置所有内容,并在设备上运行我的应用程序。

我在学校学过C++,所以我认为这不会那么困难。我使用 Qt Creator 作为我的 IDE,因为它不能与 Visual Studio 一起使用。

我还希望将我的应用程序移植到 Symbian,因此我运行了模拟器几次,并且还针对 Windows 进行了编译以调试最邪恶的错误。 (调试器无法在设备上正常工作。)

我来自.NET背景,所以有些东西我不明白。

当我点击构建按钮时,Qt Creator 会在我的项目目录中生成一堆文件:

  • moc_*.cpp文件 - 它们的目的是什么?
  • *.o文件 - 我假设这些是目标代码
  • *.rss文件 - 我不知道它们的用途,但它们肯定与 RSS 没有任何关系
  • Makefile and Makefile.Debug- 我不知道
  • AppName(不带扩展名)- Maemo 的可执行文件,以及AppName.sis- 我猜是 Symbian 的可执行文件?
  • AppName.loc- 我不知道
  • AppName_installer.pkg and AppName_template.pkg- 我不知道
  • qrc_Resources.cpp- 我想这是我的 Qt 资源

(where AppName是相关应用程序的名称)

我注意到这些文件可以被安全地删除,Qt Creator 只是重新生成它们。问题是它们污染了我的源目录。特别是因为我使用版本控制,如果它们可以重新生成,那么将它们上传到 SVN 就没有意义了。

那么,这些文件的确切用途是什么,我如何要求 Qt Creator 将它们放入另一个目录中?

Edit

Rob 推荐的似乎是最方便的解决方案,但我将 Kotti 的答案标记为接受,因为他为我提供了有关 Qt 构建机制如何工作的最佳解释。

解决方案

到目前为止,Maemo 和 Symbian 工具链似乎都不支持影子构建,因此我在项目文件中使用这些来解决这种情况:

DESTDIR = ./NoSVN
OBJECTS_DIR = ./NoSVN
MOC_DIR = ./NoSVN
RCC_DIR = ./NoSVN
UI_HEADERS_DIR = ./NoSVN

不是您问题的完整答案,而只是问题的一部分:)此外,它可以在谷歌上搜索。

猜猜如果你用C++开发,你应该知道什么是Makefile代表。另外我认为.loc文件通常是具有本地化字符串/内容的文件。

alt text
(source: thelins.se http://thelins.se/learnqt/wp-content/uploads/qt-buildsystem.png)

将 C++ 构建系统与 Qt 构建系统进行比较,您可以看到 C++ 构建系统(灰色框)未进行修改。我们仍然在这里构建 C++ 代码。但是,我们添加了更多源和标头。这里涉及到三个代码生成器:

元对象编译器(图中的 moc)– 元对象编译器获取以 Q_OBJECT 宏开头的所有类并生成 moc_*.cpp C++ 源文件。该文件包含有关被 moc 的类的信息,例如类名、继承树等,还包含信号的实现。这意味着当您发出信号时,您实际上调用了 moc 生成的函数。

用户界面编译器(图中的 uic)– 用户界面编译器从 Designer 获取设计并创建头文件。然后,这些头文件会像往常一样包含到源文件中,从而可以调用 setupUi 来实例化用户界面设计。

Qt 资源编译器(图中的 rcc)– 资源编译器是我们还没有讨论过的。它可以将图像、文本文件等嵌入到可执行文件中,但仍然可以将它们作为文件进行访问。我们稍后会看到这个,我只是想将它包含在它所属的图片中。

我希望这个插图能够阐明 Qt 到底做了什么来向 C++ 添加新的好关键字。如果您好奇 - 请随意阅读一些生成的文件。只是不要更改它们 - 每次构建应用程序时它们都会重新生成。

如果您使用 QtCreator,则会在项目目录的 debug 和release 子目录中生成 moc 文件。 uic 文件存储在项目目录的根目录中。 rcc 文件通常很无聊,但我确信您可以在项目目录层次结构中的某个位置找到它们。


编辑:您不必将这些文件包含到 SVN 中。这与提交几乎是一样的废话.ncb, .pdb和其他临时文件。每次您在 Qt 应用程序中更改某些内容时,这些临时文件都会重新生成作为更改的更新,因此将它们提交到 SVN 是没有意义的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Creator 自动生成的垃圾(文件)的用途是什么以及如何驯服它们? 的相关文章

随机推荐