1- cmake_minimum_required (VERSION 3.20 )
2-
3- project (AsyncLogger LANGUAGES CXX VERSION 0.0.1 DESCRIPTION "A lightweight C++20 asyncronous logger." )
4-
5- set (SRC_DIR "${PROJECT_SOURCE_DIR} /src" )
6- set (PUBLIC_HEADER_DIR "${PROJECT_SOURCE_DIR} /include" )
7-
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-
16- file (GLOB_RECURSE SRC_FILES
17- "${SRC_DIR} /**.cpp"
18- "${SRC_DIR} /**.hpp"
19- )
20- file (GLOB_RECURSE PUBLIC_HEADER_FILES
21- "${PUBLIC_HEADER_DIR} /**.hpp"
22- )
23-
24- add_library (${PROJECT_NAME} STATIC ${SRC_FILES} ${PUBLIC_HEADER_FILES} )
25-
26- if (CXX_FORMAT_SUPPORT)
27- message ("Using std::format for formatting, you can set USE_FMT to force fmt::format instead." )
28- else ()
29- message ("Using fmt::format for formatting." )
30- include (FetchContent )
31-
32- FetchContent_Declare (
33- fmt
34- GIT_REPOSITORY https://github.com/fmtlib/fmt.git
35- GIT_TAG 9.1.0
36- GIT_PROGRESS TRUE
37- )
38- FetchContent_MakeAvailable (fmt)
39-
40- target_link_libraries (${PROJECT_NAME} fmt )
41- endif ()
42-
43- # does the -lpthread linking for us on Linux
44- find_package (Threads REQUIRED )
45- target_link_libraries (${PROJECT_NAME} Threads::Threads )
46-
47- set_property (TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20 )
48-
49- target_include_directories (${PROJECT_NAME} PRIVATE "${PUBLIC_HEADER_DIR} /AsyncLogger/" )
50- target_include_directories (${PROJECT_NAME} PUBLIC "${SRC_DIR} " )
51- target_precompile_headers (${PROJECT_NAME} PRIVATE "${SRC_DIR} /common.hpp" )
52-
53- # public stuff
54- set_target_properties (${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER_FILES} " )
1+ cmake_minimum_required (VERSION 3.20 )
2+
3+ project (AsyncLogger LANGUAGES CXX VERSION 0.0.1 DESCRIPTION "A lightweight C++20 asyncronous logger." )
4+
5+ set (SRC_DIR "${PROJECT_SOURCE_DIR} /src" )
6+ set (PUBLIC_HEADER_DIR "${PROJECT_SOURCE_DIR} /include" )
7+
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+
16+ file (GLOB_RECURSE SRC_FILES
17+ "${SRC_DIR} /**.cpp"
18+ "${SRC_DIR} /**.hpp"
19+ )
20+ file (GLOB_RECURSE PUBLIC_HEADER_FILES
21+ "${PUBLIC_HEADER_DIR} /**.hpp"
22+ )
23+
24+ add_library (${PROJECT_NAME} STATIC ${SRC_FILES} ${PUBLIC_HEADER_FILES} )
25+
26+ if (CXX_FORMAT_SUPPORT)
27+ message (STATUS "Using std::format for formatting, you can set USE_FMT to force fmt::format instead." )
28+ else ()
29+ message (STATUS "Using fmt::format for formatting." )
30+ include (FetchContent )
31+
32+ FetchContent_Declare (
33+ fmt
34+ GIT_REPOSITORY https://github.com/fmtlib/fmt.git
35+ GIT_TAG 9.1.0
36+ GIT_PROGRESS TRUE
37+ )
38+ FetchContent_MakeAvailable (fmt)
39+
40+ target_link_libraries (${PROJECT_NAME} fmt )
41+ endif ()
42+
43+ # does the -lpthread linking for us on Linux
44+ find_package (Threads REQUIRED )
45+ target_link_libraries (${PROJECT_NAME} Threads::Threads )
46+
47+ set_property (TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20 )
48+
49+ target_include_directories (${PROJECT_NAME} PRIVATE "${PUBLIC_HEADER_DIR} /AsyncLogger/" )
50+ target_include_directories (${PROJECT_NAME} PUBLIC "${SRC_DIR} " )
51+ target_precompile_headers (${PROJECT_NAME} PRIVATE "${SRC_DIR} /common.hpp" )
52+
53+ # public stuff
54+ set_target_properties (${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER_FILES} " )
5555target_include_directories (${PROJECT_NAME} PUBLIC "${PUBLIC_HEADER_DIR} " )
0 commit comments