0

我对我的 C++ 有点生疏,因为我是一名 PHP 开发人员,并且只在大学里搞乱了 C/C++,而十年前在一个项目中使用了 C#。我公司的一位 C++ 开发人员正在使用 Qt 库。他说我们需要在 setup.exe 中放入大约 15MB 的 Qt 库内容,这对我来说似乎有点大。

有没有办法更改 Visual Studio C++ 编译器设置,以便它只从 Qt 库中挑选它实际使用的库及其依赖项,而不需要在设置中发送这么大的 15MB Qt 库内容。可执行程序?

4

3 回答 3

1

您可以静态编译 Qt。它可能会也可能不会减少您最终项目的规模。你需要根据具体情况来弄清楚。我的经验是,启用链接时间代码生成 (LTCG) 时,不值得花费大量链接时间。LTCG 通常是值得的,因为它不仅可以加快速度,而且通常还可以减少代码大小。

作为一种实际措施,您可以使用动态 Qt 库进行调试构建,仅使用静态 Qt 进行发布构建。您最终会向 Qt Creator 添加两个 Qt“版本”和两个 Qt 工具包。用 Creator 的话来说,一个 Qt“版本”仅仅是一个 Qt 构建。因此,如果您有一个 Qt 版本的两个构建(一个静态库,一个共享库),尽管共享一个版本号,但它们将是两个“版本”。

从 Qt 5 开始,对于简单的图形应用程序有一个新的好处。如果您不关心整个 Widget 机制并且可以自己绘制一个简单的窗口,那么很有可能拥有一个使用coreandgui模块而不使用widgets模块的应用程序。请参阅光栅窗口示例。这节省了几兆字节的模块。从概念上讲,这就像拥有一个带有良好图形引擎的准系统 MS-DOS 应用程序 :)

在 Qt 4 中没有单独widgets的模块,它被捆绑在gui模块中。

于 2013-09-12T15:52:06.357 回答
1

当您创建一个 Qt 应用程序时,您只包含所需的模块(QtCore、QtGui 等,..)

您将包含的模块越多,库的重量就越大。

与其他框架相比,15 MB 并不是那么大。

于 2013-09-12T15:27:21.520 回答
1

简短的回答:

要看。问题中没有足够的信息来彻底回答。

长答案:

Qt 已经发展成为一个非常强大和灵活的工具套件。根据开发人员对 Qt 的使用,它可以轻松使用多个库。目前,我/usr/lib64只看到 17 个独特的 Qt 库。这意味着 Qt 提供的所有功能仅包含在 17 个库中。

例如,一个基本的可执行文件可以使用libQtCore并且libQtGui可以生成二进制文件。虽然添加了命令的简单对话框ping可以包含前面提到的两个库并添加libQtNetwork. 我很难相信开发人员会故意包含无关的库。

所以,虽然我猜你的开发人员是一个“好人”并且没有包含他不需要的库,但他可能有。检查并查看。

老实说,15 Mb 并不是很大,尤其是当我们有千兆以太网和 98347082 GB 笔式驱动器时。

于 2013-09-12T15:29:10.960 回答