Build Qt Tests with CMake

前端 未结 2 1857
Happy的楠姐
Happy的楠姐 2021-02-01 17:47

Can anyone give me an example of some QT test code and a CMakeLists.txt that build with Cmake and ran with CTest. I can\'t seem to find any!

-Kurtis

相关标签:
2条回答
  • 2021-02-01 18:03

    An example taken from Charm (Tests/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 )
    

    The only difference to a normal executable is that you call ADD_TEST macro. Have a look at e.g. Charm to see it in action.

    0 讨论(0)
  • 2021-02-01 18:11

    Here is an example of using cmake 2.8.11 and Qt5.2. Note that cmake now supports testfiles with a .moc-include at the bottom.

    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"
    
    0 讨论(0)
提交回复
热议问题