#qt #testcase
#qt #testcase
Вопрос:
Следуя примеру тестового примера, я застрял в создании.
Моя процедура выглядит следующим образом.
-
~/Qt/5.12.2/clang_64/bin/qmake -project "QT =testlib"
=> он сгенерирован Testcase.pro -
~/Qt/5.12.2/clang_64/bin/qmake
=> Был сгенерирован Makefile -
~/Qt/5.12.2/clang_64/bin/moc -o testqstring.moc testqstring.h
=> был сгенерирован testqstring.moc -
make
=> moc_predefs.h и moc_testqstring.cpp были сгенерированы, и ошибка печати, как показано ниже.
❯ make
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -stdlib=libc -headerpad_max_install_names -arch x86_64 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -mmacosx-version-min=10.12 -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/Users/sungyong/Qt/5.12.2/clang_64/lib -o Testcase.app/Contents/MacOS/Testcase testqstring.o moc_testqstring.o -F/Users/sungyong/Qt/5.12.2/clang_64/lib -framework QtGui -framework QtTest -framework Security -framework Foundation -framework ApplicationServices -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL
duplicate symbol __ZN11TestQString18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZN11TestQString11qt_metacallEN11QMetaObject4CallEiPPv in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZNK11TestQString10metaObjectEv in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZTV11TestQString in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZTS11TestQString in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZTI11TestQString in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZN11TestQString11qt_metacastEPKc in:
testqstring.o
moc_testqstring.o
duplicate symbol __ZN11TestQString16staticMetaObjectE in:
testqstring.o
moc_testqstring.o
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Testcase.app/Contents/MacOS/Testcase] Error 1
В чем я ошибся?
Комментарии:
1. почему
~/Qt/5.12.2/clang_64/bin/qmake -project "QT =testlib"
? если в этом проекте уже есть .pro2. Раньше
qmake -project ..
у project не было .pro. Я просто следовал руководству по тестированию Qt.3. В последней части руководства есть 2 ссылки: — tutorial1/testqstring.cpp — учебник1/tutorial1.pro
4. Я не совсем понимаю, что вы имели в виду. Из
Assuming that our test was saved as testqstring.cpp in an empty directory, we build the test using qmake to create a project and generate a makefile.
.pro может быть сгенерированqmake -project
5. см. i.imgur.com/F9fG9NM.png