2011-01-20 24 views

答えて

10

Charm(テスト/ CMakeLists.txt)から採取した例:

SET(TestApplication_SRCS TestApplication.cpp) 
SET(TEST_LIBRARIES CharmCore ${QT_QTTEST_LIBRARY} ${QT_LIBRARIES}) 

SET(SqLiteStorageTests_SRCS SqLiteStorageTests.cpp) 
QT4_AUTOMOC(${SqLiteStorageTests_SRCS}) 
ADD_EXECUTABLE(SqLiteStorageTests ${SqLiteStorageTests_SRCS}) 
TARGET_LINK_LIBRARIES(SqLiteStorageTests ${TEST_LIBRARIES}) 
ADD_TEST(NAME SqLiteStorageTests COMMAND SqLiteStorageTests) 

通常実行への唯一の違いは、ADD_TESTマクロを呼び出すことです。 それを実際に見るチャーム。ここ

+0

パーフェクト。驚くばかり。本当にありがとう。 –

+2

これは、[このページ](http://qt-project.org/wiki/Writing_Unit_Tests)によると、誰かが時間を節約できるようになることを願っています: "CMakeはmocインクルードを持つqtestファイルをボトム。 –

+0

これが当てはまる場合は、テストファイルも自動化する必要があります。 – jackyalcine

22

cmake 2.8.11とQt5.2を用いた例です。 cmakeは、.moc-includeが下にあるテストファイルをサポートするようになりました。

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.11) 
project(foo) 

enable_testing() 

# Tell CMake to run moc when necessary: 
set(CMAKE_AUTOMOC ON) 

# As moc files are generated in the binary dir, tell CMake 
# to always look for includes there: 
set(CMAKE_INCLUDE_CURRENT_DIR ON) 

find_package(Qt5Test REQUIRED) 

add_executable(foo foo.cpp) 
add_test(foo foo) 

target_link_libraries(foo Qt5::Test) 

foo.cpp:

#include <QTest> 

class Foo : public QObject { 
    Q_OBJECT 
private slots: 
    void t1() { QVERIFY(true); } 
}; 

QTEST_MAIN(Foo) 
#include "foo.moc" 
+1

qt5での使用に+1。 –

+0

私は、コードをコンパイルするためにCMakeListの最後の行を編集しなければなりませんでした:target_link_libraries(foo Qt5 :: Widgets Qt5 :: Test)。 qt5は+1です。それが私のものか、実際は間違っているのか分からないので、私は答えを編集していません。 – cauchy

+0

@cauchy:もちろん、テストにQtWidgetsが必要な場合は、リンクする必要があります。:P – Smar

関連する問題