我想使用 CMake 设置 Qt 项目。我的主要项目生成一个动态库,为了能够进行单元测试和持续集成,我还希望有一个名为“UnitTests”的子目录来保存使用 Qt Test 框架的单元测试。
所以结构看起来像这样:
(抱歉,可视化效果不好,但我不知道如何在这里画树)
我必须解决的问题是 Qt Creator 似乎无法帮助进行设置。所以我环顾四周是否可以使用 Qt 和 Qt Creator 做一些不同的事情。
我找到了一个可行的解决方案,想与您分享。
无需按照建议创建 Qt Test 项目,只需在主项目中创建一个名为“UnitTests”的新文件夹即可。就我而言,这是 MyLibraryProject。然后,将一个新的测试用例添加到您的项目中,并将其直接放入新文件夹“UnitTests”中。
接下来您需要重新配置 CMakeLists 文件,如下所示:
project(MyLibraryProject LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test)
add_library(MyLibraryProject SHARED
# here you add your Sources for the main project
)
target_link_libraries(MyLibraryProject PRIVATE Qt${QT_VERSION_MAJOR}::Core)
# From here on we added things for the test project
enable_testing() # this is used to enable CTest if you want it.
# new executable for the tests
add_executable(UnitTests UnitTests/tst_ApiTest.cpp)
# adding the test to CTest
add_test(NAME ApiTest COMMAND ApiTest)
# link your library to your test code
target_link_libraries(UnitTests PRIVATE Qt${QT_VERSION_MAJOR}::Test MyLibraryProject)
所以基本上你编辑你的 CMakeLists.txt 文件并为 Qt Test 创建一个新的可执行文件,然后只需要链接到你的库。
这对我来说很有效,我什至可以使用 Qt Creator