cmake_minimum_required(VERSION 3.10.0) project(BetterSTL VERSION 0.1.0 LANGUAGES C CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # 定义源文件 set(BETTERSTL_SOURCES src/big_integer.cpp src/big_decimal.cpp src/string.cpp) # 生成静态库 (.a 文件) add_library(BetterSTL_static STATIC ${BETTERSTL_SOURCES}) target_include_directories(BetterSTL_static PUBLIC include) set_target_properties(BetterSTL_static PROPERTIES OUTPUT_NAME BetterSTL PREFIX lib) # 生成动态库 (.so 文件) add_library(BetterSTL_shared SHARED ${BETTERSTL_SOURCES}) target_include_directories(BetterSTL_shared PUBLIC include) set_target_properties(BetterSTL_shared PROPERTIES OUTPUT_NAME BetterSTL PREFIX lib) # 默认链接到静态库 add_library(BetterSTL ALIAS BetterSTL_static) enable_testing() add_executable(BigIntegerTests tests/big_integer_test.cpp) target_include_directories(BigIntegerTests PRIVATE include) target_link_libraries(BigIntegerTests PRIVATE BetterSTL_static) add_test(NAME BigIntegerTests COMMAND BigIntegerTests) add_executable(BigDecimalTests tests/big_decimal_test.cpp) target_include_directories(BigDecimalTests PRIVATE include) target_link_libraries(BigDecimalTests PRIVATE BetterSTL_static) add_test(NAME BigDecimalTests COMMAND BigDecimalTests) add_executable(StringTests tests/StringTest.cpp) target_include_directories(StringTests PRIVATE include) target_link_libraries(StringTests PRIVATE BetterSTL_static) add_test(NAME StringTests COMMAND StringTests) add_executable(IOTests tests/IOTest.cpp) target_include_directories(IOTests PRIVATE include) target_link_libraries(IOTests PRIVATE BetterSTL_static) add_test(NAME IOTests COMMAND IOTests) # 生成导出信息用于外部使用 install(TARGETS BetterSTL_static BetterSTL_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) install(DIRECTORY include/ DESTINATION include)