cmake_minimum_required(VERSION 3.10) project(H100PowerMangerTests) # 设置 C++ 标准 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 需要 GoogleTest(由 CI Dockerfile 或本地安装,提供 GTestConfig/库) find_package(GTest REQUIRED) ################################################SQLiteTest(保留原有)####### # 添加 SQLite 测试可执行文件(不使用第三方测试库) add_executable(SQLiteTest until/testSqlitdb.cpp ${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3/SQLite.cpp ${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3/sqlite3.c ${CMAKE_SOURCE_DIR}/src/pPowerManger/logc/loguru.cpp ) # 包含目录 target_include_directories(SQLiteTest PRIVATE ${CMAKE_SOURCE_DIR}/src/pPowerManger ${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3 ) # 链接库文件 target_link_libraries(SQLiteTest pthread dl ) ################################################PowerMangerTests(gtest)#### # 综合单元测试:Driver / SystemData / FaultMap / Upmsg / UdpComm / # PmSysvariable / SQLite 读回。仅链接现有 src 源码,不改动生产代码。 set(PM_SRC_DIR ${CMAKE_SOURCE_DIR}/src/pPowerManger) set(PM_TEST_SOURCES until/DriverTest.cpp until/SystemDataTest.cpp until/FaultMapTest.cpp until/UpmsgTest.cpp until/UdpCommTest.cpp until/PmSysvariableTest.cpp until/SqliteTest.cpp ) add_executable(PowerMangerTests ${PM_TEST_SOURCES} ${PM_SRC_DIR}/driver.cpp ${PM_SRC_DIR}/udpcomm/udpComm.cpp ${PM_SRC_DIR}/upmsg/upmsg_definitions.cpp ${PM_SRC_DIR}/sqlit3/SQLite.cpp ${PM_SRC_DIR}/sqlit3/sqlite3.c ${PM_SRC_DIR}/logc/loguru.cpp ) target_include_directories(PowerMangerTests PRIVATE ${PM_SRC_DIR} ${PM_SRC_DIR}/sqlit3 ${PM_SRC_DIR}/upmsg ${PM_SRC_DIR}/udpcomm ${PM_SRC_DIR}/logc ) # gtest 需要 C++14+ set_target_properties(PowerMangerTests PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON ) # 兼容两种 gtest 安装方式:镜像安装(提供 GTest::gtest_main) 或 apt(仅 GTest_LIBRARIES) if(TARGET GTest::gtest_main) set(GTEST_LIBS GTest::gtest_main GTest::gtest) else() set(GTEST_LIBS ${GTest_LIBRARIES}) target_include_directories(PowerMangerTests PRIVATE ${GTest_INCLUDE_DIRS}) endif() target_link_libraries(PowerMangerTests ${GTEST_LIBS} ${MOOS_LIBRARIES} mbutil jsoncpp m pthread dl ) ################################################udpFeeder(集成测试用)####### # 集成测试辅助:向 pPowerManger 发送真实 CCU 状态反馈 UDP 消息(字节级一致) add_executable(udpFeeder integration/udp_feeder.cpp ${PM_SRC_DIR}/udpcomm/udpComm.cpp ${PM_SRC_DIR}/logc/loguru.cpp ) target_include_directories(udpFeeder PRIVATE ${PM_SRC_DIR} ${PM_SRC_DIR}/udpcomm ${PM_SRC_DIR}/logc ) set_target_properties(udpFeeder PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) target_link_libraries(udpFeeder ${MOOS_LIBRARIES} mbutil m pthread dl ) ################################################fullFeeder(集成测试用)####### # 全类型 UDP 仿真器:CCU 状态 + 4 路配电反馈(自包含,仅依赖协议结构体头文件) add_executable(fullFeeder integration/full_feeder.cpp ) target_include_directories(fullFeeder PRIVATE ${PM_SRC_DIR} ${PM_SRC_DIR}/udpcomm ) set_target_properties(fullFeeder PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) target_link_libraries(fullFeeder pthread )