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/BigInteger.cpp src/BigDecimal.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/BigIntegerTest.cpp) target_include_directories(BigIntegerTests PRIVATE include) target_link_libraries(BigIntegerTests PRIVATE BetterSTL_static) add_test(NAME BigIntegerTests COMMAND BigIntegerTests) add_executable(BigDecimalTests tests/BigDecimalTest.cpp) target_include_directories(BigDecimalTests PRIVATE include) target_link_libraries(BigDecimalTests PRIVATE BetterSTL_static) add_test(NAME BigDecimalTests COMMAND BigDecimalTests) # 生成导出信息用于外部使用 install(TARGETS BetterSTL_static BetterSTL_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) install(DIRECTORY include/ DESTINATION include)