создать тестовый пример Qt — дублированный символ

#qt #testcase

#qt #testcase

Вопрос:

Следуя примеру тестового примера, я застрял в создании.

Моя процедура выглядит следующим образом.

  1. ~/Qt/5.12.2/clang_64/bin/qmake -project "QT =testlib"
    => он сгенерирован Testcase.pro

  2. ~/Qt/5.12.2/clang_64/bin/qmake
    => Был сгенерирован Makefile

  3. ~/Qt/5.12.2/clang_64/bin/moc -o testqstring.moc testqstring.h => был сгенерирован testqstring.moc

  4. 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" ? если в этом проекте уже есть .pro

2. Раньше 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