Files
BetterSTL/CMakeLists.txt
2026-08-16 16:28:12 +08:00

57 lines
1.9 KiB
CMake

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)