Я только начал изучать Qt несколько дней go. Вот мой Hello World:
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel label( QLabel::tr("Hello Qt!") );
label.show();
return a.exec();
}
Чтобы скомпилировать его без Qt Creator, я написал короткий скрипт компиляции:
#!/bin/bash
filename="$(pwd | awk -F "/" ' {print $NF}')" # get name of current directory
qmake -project
qmake $filename.pro
echo 'QT += core gui widgets' >> $filename.pro
make
open $filename.app
, но скрипт не работает:
/Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names -arch x86_64 -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -mmacosx-version-min=10.12 -Wl,-rpath,@executable_path/../Frameworks -o qttest.app/Contents/MacOS/qttest helloqt.o -F/usr/local/Cellar/qt/5.13.2/lib -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL
Undefined symbols for architecture x86_64:
"QApplication::exec()", referenced from:
_main in helloqt.o
"QApplication::QApplication(int&, char**, int)", referenced from:
_main in helloqt.o
"QApplication::~QApplication()", referenced from:
_main in helloqt.o
"QLabel::staticMetaObject", referenced from:
_main in helloqt.o
"QLabel::QLabel(QString const&, QWidget*, QFlags<Qt::WindowType>)", referenced from:
_main in helloqt.o
"QLabel::~QLabel()", referenced from:
_main in helloqt.o
"QWidget::show()", referenced from:
_main in helloqt.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [qttest.app/Contents/MacOS/qttest] Error 1
The application cannot be opened because its executable is missing.
однако, если я запускаю команды отдельно , это сработает, и make
не выдаст никаких ошибок.
Почему это? Что я должен сделать, чтобы скрипт работал?