【问题标题】:Makefile made by qmake only works on my pcqmake 制作的 Makefile 只能在我的电脑上运行
【发布时间】:2016-04-12 12:47:07
【问题描述】:

对于一个大学项目,我们制作了一个使用 Qt 作为 GUI 的 OpenGL 应用程序。当我使用qmake -spec macx-g++ project.pro 时,我可以创建一个Makefile,然后如果我使用make,它会正确创建应用程序。但是,当我将完整的文件夹发送给项目中的其他人并且他执行make 时,他得到了错误

Makefile:209: warning: overriding commands for target `moc_window.cpp'
Makefile:203: warning: ignoring old commands for target `moc_window.cpp'
make: *** No rule to make target `/usr/lib64/qt-3.3/mkspecs/default/qmake.conf', needed by `Makefile'.  Stop.

但是,当他在同一个文件夹中执行qmake; make 时,它确实可以正常工作。问题是在提交代码时我们不知道教授是否有可用的 qmake,所以我们希望它只使用make 来工作。我们是否遗漏了一些应该添加的东西,以使Makefileqmake 一起工作,而不必再次使用qmake?我们的.pro 文件如下。

TEMPLATE = app
TARGET = smoke

QT = core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

SOURCES += \
    fluids.cpp \
    simulation.cpp \
    visualization.cpp \
    window.cpp \
    myglwidget.cpp \
    vector.cpp \
    grid.cpp \
    scalar.cpp

HEADERS += \
    window.h \
    myglwidget.h \
    simulation.h \
    vector.h \
    grid.h \
    visualization.h \
    scalar.h

INCLUDEPATH += fftw-2.1.5/include /usr/local/include include
LIBS += -L"$$_PRO_FILE_PWD_/fftw-2.1.5/lib" -lrfftw -lfftw -framework OpenGL -framework GLUT -stdlib=libc++

QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11


FORMS += \
    window.ui

【问题讨论】:

  • 我们不知道教授是否有可用的 qmake 如果您需要 Qt 来编译您的项目,那么您确实有 qmake 可用。永远不要到处发送Makefiles(或任何其他构建工件)。
  • make: *** No rule to make target '/usr/lib64/qt3.3/mkspecs/default/qmake.conf', needed by 'Makefile'. 会告诉我 qmake 根据用户的 Qt 配置构建生成文件。所以为了构建一个 Qt 项目,你需要 Qt(并且,默认情况下,qmake)。
  • 啊那我不明白qmake 做一个Makefile 的作用,为什么qmake 不直接构建应用程序?我希望使用 Makefile 其他人也可以仅使用 make 构建它
  • 编写qmake 文件意味着您作为Qt 用户不必费力手动编写Makefile(检测Qt 目录、处理不同的编译器等)。 qmake 生成 Makefile 意味着 Qt 开发人员不必重新实现整个 make。每个人都节省时间。

标签: qt makefile qmake


【解决方案1】:

构建目录不可移植。它只适用于您执行 qmake 的系统,以及您运行 qmake 的特定 Qt 安装。回想一下,每个 Qt 安装都有自己的 qmake,例如如果您有三个 Qt 版本,每个版本都提供了自己的 qmake,您必须使用它来使用该版本构建项目。

您发布的项目应包含 .pro 文件、源代码以及构建所需的任何其他内容,例如图标文件、资源等。

为了构建它,接收者应该:

  1. 创建一个构建文件夹。
  2. cd 进入构建文件夹。
  3. qmake /path/to/sources/project.pro && make -j

这就是您分发和构建 Qt 项目的方式。

为什么qmake不直接构建应用程序?

你为什么不自己做鞋?原因是一样的。不要重新发明轮子。

当然,工程师有时会很想抓挠。输入Qt Build System (qbs)。如果您的项目构建以.qbs 文件的形式提供,那么您可以:

  1. 创建构建根文件夹。
  2. cd 进入构建根文件夹。
  3. qbs -f /path/to/sources/project.qbs - 这将构建项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多