由qmake制作的Makefile仅适用于我的电脑

时间:2016-04-12 12:47:08

标签: qt makefile qmake

对于大学项目,我们制作了一个OpenGL应用程序,它使用Qt作为GUI。当我使用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来工作。我们是否遗漏了应该添加的内容,以便Makefile使用qmake工作,而无需再次执行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

1 个答案:

答案 0 :(得分:3)

构建目录不可移植。它只是意味着在您执行qmake的系统上运行,并且对于您运行qmake的特定Qt安装。回想一下,每个Qt安装都有自己的qmake,例如如果您有三个Qt版本,则每个版本都提供自己的qmake,必须使用该版本来构建项目。

您发布的项目应包含.pro文件,来源以及构建要求的其他内容,例如图标文件,资源等。

构建它的接收者应该:

  1. 创建构建文件夹。
  2. cd进入构建文件夹。
  3. qmake /path/to/sources/project.pro && make -j
  4. 这就是你如何分发和建立Qt项目。

      

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

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

    当然,工程师有时会搔痒。输入Qt Build System (qbs)。如果项目的构建是作为.qbs文件提供的,那么您可以:

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