set(CRU_BASE_INCLUDE_DIR ${CRU_INCLUDE_DIR}/cru/common) add_library(cru_base SHARED Exception.cpp Logger.cpp PropertyTree.cpp String.cpp StringUtil.cpp io/Stream.cpp io/MemoryStream.cpp ) target_sources(cru_base PUBLIC ${CRU_BASE_INCLUDE_DIR}/Base.hpp ${CRU_BASE_INCLUDE_DIR}/Bitmask.hpp ${CRU_BASE_INCLUDE_DIR}/Event.hpp ${CRU_BASE_INCLUDE_DIR}/Exception.hpp ${CRU_BASE_INCLUDE_DIR}/Logger.hpp ${CRU_BASE_INCLUDE_DIR}/PreConfig.hpp ${CRU_BASE_INCLUDE_DIR}/PropertyTree.hpp ${CRU_BASE_INCLUDE_DIR}/Range.hpp ${CRU_BASE_INCLUDE_DIR}/SelfResolvable.hpp ${CRU_BASE_INCLUDE_DIR}/String.hpp ${CRU_BASE_INCLUDE_DIR}/StringUtil.hpp ${CRU_BASE_INCLUDE_DIR}/io/Stream.hpp ${CRU_BASE_INCLUDE_DIR}/io/MemoryStream.hpp ) target_include_directories(cru_base PUBLIC ${CRU_INCLUDE_DIR}) target_compile_definitions(cru_base PUBLIC $<$:CRU_DEBUG>) target_compile_definitions(cru_base PRIVATE CRU_BASE_EXPORT_API) if (UNIX) target_sources(cru_base PRIVATE ErrnoException.cpp io/UnixFileStream.cpp PUBLIC ${CRU_BASE_INCLUDE_DIR}/ErrnoException.hpp ${CRU_BASE_INCLUDE_DIR}/io/UnixFileStream.hpp ) endif() if (WIN32) target_compile_definitions(cru_base PUBLIC CRU_PLATFORM_WINDOWS) elseif(APPLE) target_compile_definitions(cru_base PUBLIC CRU_PLATFORM_OSX) else() target_compile_definitions(cru_base PUBLIC CRU_PLATFORM_LINUX) endif() find_package(Microsoft.GSL CONFIG REQUIRED) target_link_libraries(cru_base PUBLIC Microsoft.GSL::GSL)