2011-01-20 5 views
14

누구나 Qm 테스트 코드와 Cmake로 빌드하고 CTest로 실행 한 CMakeLists.txt의 예제를 제공 할 수 있습니까? 나는 아무것도 찾을 수없는 것!CMake로 Qt 테스트 빌드

-Kurtis

답변

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 include가있는 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). +1에 대한 qt5. 나는 그것이 나인지, 아니면 실제로 오류인지 모르겠다. 그래서 나는 대답을 편집하고 있지 않다. – cauchy

+0

@cauchy : 물론 테스트에 QtWidgets이 필요한 경우 링크가 필요합니다. : P – Smar

관련 문제