什么是Qt构建系统中的Jom?如何从命令行调用Jom来构建Qt项目?

16
尝试从命令行构建和运行一个简单的“Hello world…” Qt应用程序,按照以下步骤开始并停留在编译和构建中... 1. 创建main.cpp文件 2. 运行qmake -pro创建项目文件 3. 运行qmake创建make文件 (这里需要运行nmake或jom..我尝试了jom) 4. 运行jom.exe makefile,但没有任何反应..
所以这里有我的问题.. 什么是jom(及其扩展), 如何从命令行调用jom。
我正在使用带有Microsoft Visual C++编译器11.0的Qt 5.1.1。

你有没有看过这个:http://qt-project.org/wiki/jom? - vahancho
1
是的,我做了,但是没有关于如何调用jom!或jom扩展的信息。 - Prady
你只需要使用jom而不是nmake,就可以加速Visual C++ Qt构建。-j选项也可用于设置并发进程的数量。原始帖子链接:http://blog.qt.digia.com/blog/2009/03/27/speeding-up-visual-c-qt-builds/。 - vahancho
由于jom是nmake的替代品,因此请像对待nmake一样对待它。另一方面,如果您的问题是关于如何在系统上查找可执行文件,那么这里真的不合适-请在超级用户上寻找答案(提示:Windows具有内置文件搜索功能)。 - Kuba hasn't forgotten Monica
2个回答

19

nmake并没有像GNU make那样利用所有可用的处理能力。jom是nmake的克隆版,支持并行执行多个独立命令。它可以同时使用任意数量的进程。

例如,在四核机器上使用jom进行Qt构建所需的时间只有使用nmake的一半。

您还可以使用-j命令行参数设置并发进程数:

C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe -j 12 -f Makefile 

12代表你想要使用的内核数。我使用12是因为我有12个线程。


我尝试执行这个命令,但是它报错了:“错误:文件-j不存在。” - Prady
@Prady 尝试使用 -j %NUMBER_OF_PROCESSORS% 来至少尝试每个核心一线程编译。 jom 有时非常挑剔。 - kayleeFrye_onDeck
@Prady,Nejat纠正了答案中的一个错误,但没有告诉你。 - Johan Boulé

0
如 (Nejat) 所回答的那样,GNU Make 在这个主题上有一些众所周知的限制,并且它不会使用所有可用的计算能力,因此建议使用 jom。jom 是 nmake 的克隆版,支持并行执行多个独立命令。它可以并发地使用任意数量的进程。 要使用 Jom,必须在项目本身中设置,而不是在 Qt 工具选项中设置:
  1. 进入项目的构建设置,在构建步骤类别下找到“Make”项。
  2. 展开该项的详细信息,您将找到一个“Override mingw32-make.exe:”项。将 jom 位置(例如:“C:\QtSDK\QtCreator\bin\jom.exe”)粘贴到其中,然后我就可以使用多个核心来进行构建。

设置 jom 的步骤

所有功劳归功于上面 Nejat 的回答。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接