From 82e143c8dff800a76cf144c5d3b1cff26cb4ecfa Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Fri, 20 Dec 2024 17:18:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=20centos=20=E4=B8=8D=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 49 ++++++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 122ad8b..6716974 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,8 +98,11 @@ target_link_libraries(${PROJECT_NAME}_lib add_executable(${PROJECT_NAME} src/main.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib) +# 添加一个选项来控制是否编译测试 +option(BUILD_TESTS "Build test cases" ON) + # 添加测试 -if(EXISTS "${CMAKE_SOURCE_DIR}/tests") +if(BUILD_TESTS AND EXISTS "${CMAKE_SOURCE_DIR}/tests") if(APPLE) # macOS 使用 FetchContent 下载 googletest FetchContent_Declare( @@ -109,11 +112,14 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/tests") ) FetchContent_MakeAvailable(googletest) else() - # CentOS 使用系统安装的 gtest - find_package(GTest 1.8 REQUIRED) - find_package(Threads REQUIRED) + # CentOS 也使用 FetchContent 下载 googletest + FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG v1.15.2 + ) + FetchContent_MakeAvailable(googletest) endif() - enable_testing() # 测试源文件列表 set(TEST_SOURCES @@ -128,32 +134,13 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/tests") # 创建测试可执行文件 add_executable(unit_tests ${TEST_SOURCES}) - if(APPLE) - target_link_libraries(unit_tests - PRIVATE - ${PROJECT_NAME}_lib - GTest::gtest_main - GTest::gmock_main - ) - else() - target_link_libraries(unit_tests - PRIVATE - ${PROJECT_NAME}_lib - gtest - gtest_main - gmock - gmock_main - ${CMAKE_THREAD_LIBS_INIT} - ) - target_include_directories(unit_tests - PRIVATE - ${GTEST_INCLUDE_DIRS} - ) - endif() - - # 添加测试 - include(GoogleTest) - gtest_discover_tests(unit_tests) + # 统一 macOS 和 CentOS 的链接设置 + target_link_libraries(unit_tests + PRIVATE + ${PROJECT_NAME}_lib + GTest::gtest_main + GTest::gmock_main + ) endif() # 打印配置信息