【问题标题】:convert qmake file to unix makefile将 qmake 文件转换为 unix makefile
【发布时间】:2015-05-28 18:11:59
【问题描述】:

我有一个 cli 程序,我想在旧机器(没有安装 qt)上构建它。我的主要开发机器有 QT,我使用 qt-creator 来完成我的大部分工作,但是当转到这些旧机器并运行 make 时,由 qmake 生成的 makefile 期望 qmake 可用。

如何使 qmake 文件可移植? 编辑: 平台是Linux,(各种服务器,一些旧的一些新的) 使用 qmake 制作 makefile 不起作用,因为创建的 makefile 需要 qmake(因此我的问题)。

【问题讨论】:

  • 这取决于...如果您在项目中使用 Qt 库(QString、QApp、QWidgets 等),则需要安装 Qt 才能编译您的项目。

标签: c++ qt makefile qmake


【解决方案1】:

如果您告诉我们您想要使用 make 的平台,那将会很有帮助。

通过使用 qmake,您可以轻松地为您想要的平台创建 Makefile,通过运行 qmake as

$qmake -spec your_desire_platform_spec your_project.pro

然后运行,make as

$make

说,你想在 FreeBSD 上运行它;

如果你想使用clang,qmake as

$qmake -spec freebsd-clang your_project.pro

如果你想使用 g++,运行 qmake as

$qmake -spec freebsd-g++ your_project.pro

然后运行 ​​make

$make

希望对你有所帮助。

【讨论】:

  • 不,这不起作用,因为创建的 makefile 需要 qmake 存在。我正在寻找精简的简单制作版本。环境是多台服务器上的 Linux。
  • 你对我抱有希望。我以为你巧妙地制作了一个将 qmake 文件转换为 make 文件的 makefile。我想到的 qmake 文件非常大,涵盖了多个目录和条件定义。我知道我可能不得不手动完成,只是希望有一个自动方法。
【解决方案2】:

不要使用qmake 制作非Qt 项目。这没有任何意义。但是,如果你的项目文件只是一系列的

SOURCES = ...

然后只需定义一个具有相同值的 Makefile 变量,定义类似

OBJECTS = $(patsubst %.cpp,%.o, $(SOURCES))

然后定义如下规则:

%.o: %.cc
      g++ -o $@ $<

(或任何合适的编译器)。

您还可以查看生成的 Makefile,将其剥离为最基本的表达式,然后删除 qmake 文件。

【讨论】:

  • 嗯,使用 qmake 制作非 Qt 项目确实有意义。它是另一个元制作工具 - 不如 cmake 强大,但属于类似类型。我会避免这种绝对的陈述。
  • ...这绝对比手动编写 makefile 更有意义。
  • 使用 qmake 是我选择的开发平台 qt-creator 中的默认设置。我尝试将生成的 makefile 剥离为最简单的表达式,但它很快变得非常复杂。 (这是一个相当大的项目)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 2012-01-19
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多