qmake 制作的 Makefile 只适用于我的电脑
Makefile made by qmake only works on my pc
对于一个大学项目,我们制作了一个使用 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 的系统,以及您从中 运行 qmake 的特定 Qt 安装。回想一下,每个 Qt 安装都有自己的 qmake,例如如果您有三个 Qt 版本,每个版本都提供自己的 qmake,您必须使用该版本构建项目。
您发送的项目应包含 .pro
文件、源代码以及构建所需的任何其他内容,如图标文件、资源等。
要构建它,收件人应该:
- 创建构建文件夹。
cd
进入构建文件夹。
qmake /path/to/sources/project.pro && make -j
这就是您分发和构建 Qt 项目的方式。
why does qmake not build the application directly?
你为什么不自己做鞋?原因是一样的。不要重新发明轮子。
当然,工程师们有时也会心痒痒。输入 Qt Build System (qbs)。如果您的项目构建是作为 .qbs
文件给出的,那么您可以:
- 创建构建根文件夹。
cd
进入构建根文件夹。
qbs -f /path/to/sources/project.qbs
- 这将构建项目。
对于一个大学项目,我们制作了一个使用 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 的系统,以及您从中 运行 qmake 的特定 Qt 安装。回想一下,每个 Qt 安装都有自己的 qmake,例如如果您有三个 Qt 版本,每个版本都提供自己的 qmake,您必须使用该版本构建项目。
您发送的项目应包含 .pro
文件、源代码以及构建所需的任何其他内容,如图标文件、资源等。
要构建它,收件人应该:
- 创建构建文件夹。
cd
进入构建文件夹。qmake /path/to/sources/project.pro && make -j
这就是您分发和构建 Qt 项目的方式。
why does qmake not build the application directly?
你为什么不自己做鞋?原因是一样的。不要重新发明轮子。
当然,工程师们有时也会心痒痒。输入 Qt Build System (qbs)。如果您的项目构建是作为 .qbs
文件给出的,那么您可以:
- 创建构建根文件夹。
cd
进入构建根文件夹。qbs -f /path/to/sources/project.qbs
- 这将构建项目。