11cmake_minimum_required (VERSION 3.20 )
22
3+ option (USE_FMT "Use fmt::format instead of std::format" 0 )
4+
35project (AsyncLogger LANGUAGES CXX VERSION 0.0.1 DESCRIPTION "A lightweight C++20 asyncronous logger." )
46
57set (SRC_DIR "${PROJECT_SOURCE_DIR} /src" )
68set (PUBLIC_HEADER_DIR "${PROJECT_SOURCE_DIR} /include" )
79
8- # check std::format support
9- if (NOT USE_FMT)
10- include (CheckIncludeFileCXX )
11- check_include_file_cxx ("format" CXX_FORMAT_SUPPORT )
12- else ()
13- set (CXX_FORMAT_SUPPORT 0)
14- endif ()
15-
1610file (GLOB_RECURSE SRC_FILES
1711 "${SRC_DIR} /**.cpp"
1812 "${SRC_DIR} /**.hpp"
@@ -23,7 +17,11 @@ file(GLOB_RECURSE PUBLIC_HEADER_FILES
2317
2418add_library (${PROJECT_NAME} STATIC ${SRC_FILES} ${PUBLIC_HEADER_FILES} )
2519
26- if (CXX_FORMAT_SUPPORT)
20+ # check std::format support
21+ include (CheckIncludeFileCXX )
22+ check_include_file_cxx ("format" CXX_FORMAT_SUPPORT )
23+
24+ if (CXX_FORMAT_SUPPORT AND NOT USE_FMT)
2725 message (STATUS "Using std::format for formatting, you can set USE_FMT to force fmt::format instead." )
2826else ()
2927 message (STATUS "Using fmt::format for formatting." )
@@ -37,12 +35,16 @@ else()
3735 )
3836 FetchContent_MakeAvailable (fmt)
3937
38+ target_compile_definitions (${PROJECT_NAME} PRIVATE USE_FMT=1 )
4039 target_link_libraries (${PROJECT_NAME} fmt )
4140endif ()
4241
42+ unset (USE_FMT CACHE )
43+ unset (CXX_FORMAT_SUPPORT CACHE )
44+
4345# does the -lpthread linking for us on Linux
4446find_package (Threads REQUIRED )
45- target_link_libraries (${PROJECT_NAME} Threads::Threads )
47+ target_link_libraries (${PROJECT_NAME} Threads::Threads )
4648
4749set_property (TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20 )
4850
@@ -52,4 +54,4 @@ target_precompile_headers(${PROJECT_NAME} PRIVATE "${SRC_DIR}/common.hpp")
5254
5355# public stuff
5456set_target_properties (${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER_FILES} " )
55- target_include_directories (${PROJECT_NAME} PUBLIC "${PUBLIC_HEADER_DIR} " )
57+ target_include_directories (${PROJECT_NAME} PUBLIC "${PUBLIC_HEADER_DIR} " )
0 commit comments