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 ) ################################################pccuTest(pCCU 单元测试)##### # pCCU 协议编解码 / 校验和 / 链路分发 / 数据库 单元测试 set(CCU_DIR ${CMAKE_SOURCE_DIR}/src/pCCU) add_executable(pccuTest pccu/pccuTest.cpp ${CCU_DIR}/protocol/Frame.cpp ${CCU_DIR}/protocol/Message.cpp ${CCU_DIR}/protocol/MessageRegistry.cpp ${CCU_DIR}/protocol/FcProtocol.cpp ${CCU_DIR}/protocol/PmProtocol.cpp ${CCU_DIR}/protocol/DisProtocol.cpp ${CCU_DIR}/protocol/CanBms.cpp ${CCU_DIR}/comm/UdpEndpoint.cpp ${CCU_DIR}/comm/LinkManager.cpp ${CCU_DIR}/store/DbStore.cpp ${PM_SRC_DIR}/sqlit3/sqlite3.c ${PM_SRC_DIR}/logc/loguru.cpp ) target_include_directories(pccuTest PRIVATE ${CCU_DIR} ${PM_SRC_DIR} ${PM_SRC_DIR}/sqlit3 ${PM_SRC_DIR}/logc ) set_target_properties(pccuTest PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) target_link_libraries(pccuTest ${MOOS_LIBRARIES} m pthread dl ) ################################################pmotorTest(pMotor 单元测试)#### # pMotor 推进电机 CAN 协议编解码单元测试(独立可执行,无 gtest 依赖) set(MOTOR_DIR ${CMAKE_SOURCE_DIR}/src/pMotor) add_executable(pmotorTest pmotor/pmotorTest.cpp ${MOTOR_DIR}/protocol/MotorCan.cpp ) target_include_directories(pmotorTest PRIVATE ${MOTOR_DIR} ) set_target_properties(pmotorTest PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON ) target_link_libraries(pmotorTest m pthread )