【发布时间】: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 来工作。我们是否遗漏了一些应该添加的东西,以使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
【问题讨论】:
-
我们不知道教授是否有可用的 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。每个人都节省时间。