?
Hallo,
ich hab folgendes Problem: ich wollte ein einfaches Beispiel mit cmake basteln, das einen UnitTest mit der Qt Test Library kompiliert. Ich hab das Teil zuerst mit einer *.pro-Datei kompiliert, hat geklappt. Allerdings ergibt der Lauf mit dem von CMake generierten Makefile einen Linkerfehler. Wäre schön, wenn jemand eine Lösung findet, im Web hab ich leider kein Beispiel gefunden.
Die CMake-Datei die nicht funktioniert:
project(MoneyTest)
cmake_minimum_required(VERSION 2.6.0)
find_package(Qt4 REQUIRED)
include( ${QT_USE_FILE} )
set(QT_USE_QTTEST TRUE)
set(project_SRCS
Money.h
Money.cpp
MoneyTest.cpp
MoneyTest.h
)
set(project_MOCS
MoneyTest.h
)
qt4_wrap_cpp(project_SRCS ${project_MOCS} )
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(MoneyTest ${project_SRCS})
target_link_libraries(MoneyTest ${QT_LIBRARIES})
Fehlermeldung des Compiler/Linker
[ 50%] Building CXX object CMakeFiles/MoneyTest.dir/Money.cpp.o
[100%] Building CXX object CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o
Linking CXX executable MoneyTest
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `QTest::qWait(int)':
MoneyTest.cpp:(.text+0x70): undefined reference to `QTest::qSleep(int)'
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `QTest::simulateEvent(QWidget*, bool, int, QFlags<Qt::KeyboardModifier>, QString, bool, int)':
MoneyTest.cpp:(.text+0xd3): undefined reference to `QTest::defaultKeyDelay()'
MoneyTest.cpp:(.text+0xed): undefined reference to `QTest::defaultKeyDelay()'
MoneyTest.cpp:(.text+0x18a): undefined reference to `QTest::qWarn(char const*)'
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `QTest::mouseEvent(QTest::MouseAction, QWidget*, Qt::MouseButton, QFlags<Qt::KeyboardModifier>, QPoint, int)':
MoneyTest.cpp:(.text+0xead): undefined reference to `QTest::defaultMouseDelay()'
MoneyTest.cpp:(.text+0xeca): undefined reference to `QTest::defaultMouseDelay()'
MoneyTest.cpp:(.text+0x1404): undefined reference to `QTest::qWarn(char const*)'
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `MoneyTest::testAddition()':
MoneyTest.cpp:(.text+0x156a): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)'
MoneyTest.cpp:(.text+0x1595): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)'
MoneyTest.cpp:(.text+0x15d1): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)'
MoneyTest.cpp:(.text+0x15f7): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)'
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `MoneyTest::testSubtraction()':
MoneyTest.cpp:(.text+0x16be): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)'
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o:MoneyTest.cpp:(.text+0x16e9): more undefined references to `QTest::qVerify(bool, char const*, char const*, char const*, int)' follow
CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `main':
MoneyTest.cpp:(.text+0x1801): undefined reference to `QTest::qExec(QObject*, int, char**)'
collect2: ld returned 1 exit status
make[2]: *** [MoneyTest] Fehler 1
make[1]: *** [CMakeFiles/MoneyTest.dir/all] Fehler 2
make: *** [all] Fehler 2
Die *.pro-Datei die funktioniert.
CONFIG += qtestlib
SOURCES += Money.cpp
HEADERS += Money.h \
MoneyTest.h
SOURCES += MoneyTest.cpp