cpp-mcp/test/CMakeLists.txt

76 lines
1.8 KiB
CMake
Raw Permalink Normal View History

2025-03-08 23:44:34 +08:00
cmake_minimum_required(VERSION 3.10)
2025-03-09 15:45:09 +08:00
# Set test project
2025-03-08 23:44:34 +08:00
set(TEST_PROJECT_NAME "mcp_tests")
project(${TEST_PROJECT_NAME})
2025-03-09 15:45:09 +08:00
# Set C++ standard
2025-03-08 23:44:34 +08:00
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2025-03-13 00:04:18 +08:00
# Find required packages
find_package(Threads REQUIRED)
2025-03-09 15:45:09 +08:00
# Use local Google Test
2025-03-08 23:44:34 +08:00
set(GTEST_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
add_subdirectory(${GTEST_ROOT} googletest-build)
2025-03-09 15:45:09 +08:00
# For older versions of CMake, this option needs to be set
2025-03-08 23:44:34 +08:00
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
2025-03-09 15:45:09 +08:00
# Include header directories
2025-03-13 00:04:18 +08:00
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../common)
2025-03-08 23:44:34 +08:00
include_directories(${GTEST_ROOT}/googletest/include)
include_directories(${GTEST_ROOT}/googlemock/include)
2025-03-09 15:45:09 +08:00
# Add test source files
2025-03-08 23:44:34 +08:00
set(TEST_SOURCES
2025-03-13 00:04:18 +08:00
mcp_test.cpp
2025-03-08 23:44:34 +08:00
)
2025-03-09 15:45:09 +08:00
# Create test executable
2025-03-08 23:44:34 +08:00
add_executable(${TEST_PROJECT_NAME} ${TEST_SOURCES})
2025-03-13 00:04:18 +08:00
# Link directories
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../build/src)
2025-03-14 15:53:58 +08:00
if(WIN32)
set(MCP_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../build/src/mcp.lib")
else()
set(MCP_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../build/src/libmcp.a")
endif()
2025-03-09 15:45:09 +08:00
# Link Google Test and MCP library
2025-03-08 23:44:34 +08:00
target_link_libraries(${TEST_PROJECT_NAME} PRIVATE
gtest
gtest_main
gmock
gmock_main
2025-03-14 15:53:58 +08:00
mcp
2025-03-08 23:44:34 +08:00
Threads::Threads
)
2025-03-09 15:45:09 +08:00
# If OpenSSL is found, link OpenSSL libraries
if(OPENSSL_FOUND)
target_link_libraries(${TEST_PROJECT_NAME} PRIVATE ${OPENSSL_LIBRARIES})
endif()
2025-03-13 21:46:49 +08:00
if(APPLE)
set_target_properties(${TEST_PROJECT_NAME} PROPERTIES LINK_FLAGS "-Wl,-no_warn_duplicate_libraries")
endif()
2025-03-09 15:45:09 +08:00
# Enable testing
2025-03-08 23:44:34 +08:00
enable_testing()
2025-03-09 15:45:09 +08:00
# Add test
2025-03-08 23:44:34 +08:00
add_test(
NAME ${TEST_PROJECT_NAME}
COMMAND ${TEST_PROJECT_NAME}
2025-03-12 22:45:17 +08:00
)
# Add custom target to run tests
add_custom_target(run_tests
COMMAND ${CMAKE_CTEST_COMMAND} --verbose
DEPENDS ${TEST_PROJECT_NAME}
2025-03-08 23:44:34 +08:00
)