cmake_minimum_required(VERSION 3.10) project(DataRouter C) set(CMAKE_C_STANDARD 11) # ======== 静态库 ======== add_library(DataRouter STATIC datarouter.c) target_include_directories(DataRouter PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) # ======== 共享库(可选,通过 BUILD_SHARED 控制) ======== option(BUILD_SHARED "Build shared library" ON) if(BUILD_SHARED) add_library(DataRouter_shared SHARED datarouter.c) target_include_directories(DataRouter_shared PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) set_target_properties(DataRouter_shared PROPERTIES OUTPUT_NAME DataRouter) endif() # ======== 示例程序 ======== if(BUILD_EXAMPLES OR NOT DEFINED BUILD_EXAMPLES) add_executable(example example.c) target_link_libraries(example DataRouter) endif() # ======== 测试 ======== if(BUILD_TESTING OR NOT DEFINED BUILD_TESTING) enable_testing() add_executable(test_datarouter tests/test_datarouter.c) target_link_libraries(test_datarouter DataRouter) add_test(NAME datarouter COMMAND test_datarouter) endif()