对于大学项目,我们制作了一个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
答案 0 :(得分:3)
构建目录不可移植。它只是意味着在您执行qmake的系统上运行,并且对于您运行qmake的特定Qt安装。回想一下,每个Qt安装都有自己的qmake,例如如果您有三个Qt版本,则每个版本都提供自己的qmake,必须使用该版本来构建项目。
您发布的项目应包含.pro
文件,来源以及构建要求的其他内容,例如图标文件,资源等。
构建它的接收者应该:
cd
进入构建文件夹。qmake /path/to/sources/project.pro && make -j
这就是你如何分发和建立Qt项目。
为什么qmake没有直接构建应用程序?
你为什么不自己做鞋子?原因是一样的。不要重新发明轮子。
当然,工程师有时会搔痒。输入Qt Build System (qbs)。如果项目的构建是作为.qbs
文件提供的,那么您可以:
cd
进入构建根文件夹。qbs -f /path/to/sources/project.qbs
- 这会构建项目。