Merge branch 'static-lib' of https://github.com/gabime/spdlog into static-lib
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
* text=false
 | 
			
		||||
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
# Auto generated files
 | 
			
		||||
build/*
 | 
			
		||||
build/*
 | 
			
		||||
*.slo
 | 
			
		||||
*.lo
 | 
			
		||||
*.o
 | 
			
		||||
@@ -65,4 +65,5 @@ install_manifest.txt
 | 
			
		||||
/tests/logs/*
 | 
			
		||||
 | 
			
		||||
# idea
 | 
			
		||||
.idea/
 | 
			
		||||
.idea/
 | 
			
		||||
cmake-build-*/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										152
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										152
									
								
								CMakeLists.txt
									
									
									
									
									
								
							@@ -12,8 +12,6 @@ if(NOT CMAKE_BUILD_TYPE)
 | 
			
		||||
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# compiler config
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
@@ -21,7 +19,32 @@ set(CMAKE_CXX_STANDARD 11)
 | 
			
		||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
			
		||||
set(CMAKE_CXX_EXTENSIONS OFF)
 | 
			
		||||
 | 
			
		||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# Set SPDLOG_MASTER_PROJECT to ON if we are building spdlog
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# Check if spdlog is being used directly or via add_subdirectory, but allow overriding
 | 
			
		||||
if (NOT DEFINED SPDLOG_MASTER_PROJECT)
 | 
			
		||||
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
 | 
			
		||||
    set(SPDLOG_MASTER_PROJECT ON)
 | 
			
		||||
else()
 | 
			
		||||
    set(SPDLOG_MASTER_PROJECT OFF)
 | 
			
		||||
endif()
 | 
			
		||||
endif ()
 | 
			
		||||
 | 
			
		||||
option(BUILD_SHARED_LIBS "Build as shared library" OFF)
 | 
			
		||||
option(SPDLOG_FMT_EXTERNAL "Use external fmt library instead of bundled" OFF)
 | 
			
		||||
option(SPDLOG_BUILD_EXAMPLES "Build examples" ${SPDLOG_MASTER_PROJECT})
 | 
			
		||||
option(SPDLOG_BUILD_BENCH "Build benchmarks (Requires https://github.com/google/benchmark.git to be installed)" ${SPDLOG_MASTER_PROJECT})
 | 
			
		||||
option(SPDLOG_BUILD_TESTS "Build tests" ${SPDLOG_MASTER_PROJECT})
 | 
			
		||||
option(SPDLOG_INSTALL "Generate the install target." ${SPDLOG_MASTER_PROJECT})
 | 
			
		||||
option(CMAKE_EXPORT_NO_PACKAGE_REGISTRY "Disable registration of CMake's build directory." ON)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
 | 
			
		||||
 | 
			
		||||
find_package(Threads REQUIRED)
 | 
			
		||||
 | 
			
		||||
if(SPDLOG_MASTER_PROJECT AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))
 | 
			
		||||
    add_compile_options("-Wall")
 | 
			
		||||
    add_compile_options("-Wextra")
 | 
			
		||||
    add_compile_options("-Wconversion")
 | 
			
		||||
@@ -29,58 +52,52 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCH
 | 
			
		||||
    add_compile_options("-Wfatal-errors")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# Static library version
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
add_library(spdlog src/spdlog.cpp)
 | 
			
		||||
target_compile_definitions(spdlog PUBLIC SPDLOG_COMPILED_LIB)
 | 
			
		||||
target_include_directories(spdlog PUBLIC
 | 
			
		||||
    "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
 | 
			
		||||
    "$<INSTALL_INTERFACE:include>")
 | 
			
		||||
target_link_libraries(spdlog PUBLIC Threads::Threads)
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# Header only version
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
add_library(spdlog_header_only INTERFACE)
 | 
			
		||||
 | 
			
		||||
target_include_directories(spdlog_header_only INTERFACE
 | 
			
		||||
        "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
 | 
			
		||||
        "$<INSTALL_INTERFACE:include>")
 | 
			
		||||
target_link_libraries(spdlog_header_only INTERFACE Threads::Threads)
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# address sanitizers check
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
include(cmake/sanitizers.cmake)
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# spdlog target
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
# Check if spdlog is being used directly or via add_subdirectory
 | 
			
		||||
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
 | 
			
		||||
    set(SPDLOG_MASTER_PROJECT ON)
 | 
			
		||||
else()
 | 
			
		||||
    set(SPDLOG_MASTER_PROJECT OFF)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
option(SPDLOG_BUILD_EXAMPLES "Build examples" ${SPDLOG_MASTER_PROJECT})
 | 
			
		||||
option(SPDLOG_BUILD_BENCH "Build benchmarks (Requires https://github.com/google/benchmark.git to be installed)" OFF)
 | 
			
		||||
option(SPDLOG_BUILD_TESTS "Build tests" ON)
 | 
			
		||||
option(SPDLOG_FMT_EXTERNAL "Use external fmt library instead of bundled" OFF)
 | 
			
		||||
option(SPDLOG_INSTALL "Generate the install target." ${SPDLOG_MASTER_PROJECT})
 | 
			
		||||
 | 
			
		||||
set(HEADER_BASE "${CMAKE_CURRENT_SOURCE_DIR}/include/spdlog")
 | 
			
		||||
 | 
			
		||||
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
 | 
			
		||||
 | 
			
		||||
# Build static lib
 | 
			
		||||
set(SRC_BASE "${CMAKE_CURRENT_SOURCE_DIR}/src")
 | 
			
		||||
set(STATIC_SRC_FILES "${SRC_BASE}/spdlog.cpp")
 | 
			
		||||
add_library(spdlog_static STATIC ${STATIC_SRC_FILES})
 | 
			
		||||
add_library(spdlog::static ALIAS spdlog_static)
 | 
			
		||||
target_compile_definitions(spdlog_static PUBLIC SPDLOG_STATIC_LIB )
 | 
			
		||||
target_include_directories(spdlog_static PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>")
 | 
			
		||||
set_target_properties(spdlog_static PROPERTIES OUTPUT_NAME "spdlog")
 | 
			
		||||
set_target_properties(spdlog_static PROPERTIES DEBUG_POSTFIX "-debug")
 | 
			
		||||
 | 
			
		||||
# Headr only
 | 
			
		||||
add_library(spdlog_header_only INTERFACE)
 | 
			
		||||
target_include_directories(spdlog_header_only INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>")
 | 
			
		||||
add_library(spdlog::header_only ALIAS spdlog_header_only)
 | 
			
		||||
 | 
			
		||||
if(SPDLOG_FMT_EXTERNAL AND NOT TARGET fmt::fmt)
 | 
			
		||||
    find_package(fmt REQUIRED CONFIG)
 | 
			
		||||
if(SPDLOG_MASTER_PROJECT)
 | 
			
		||||
    include(cmake/sanitizers.cmake)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# use fmt package if using exertnal fmt
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
if(SPDLOG_FMT_EXTERNAL)
 | 
			
		||||
    target_compile_definitions(spdlog_static INTERFACE SPDLOG_FMT_EXTERNAL)
 | 
			
		||||
    target_link_libraries(spdlog_static INTERFACE fmt::fmt)
 | 
			
		||||
    if (NOT TARGET fmt::fmt)
 | 
			
		||||
        find_package(fmt REQUIRED)
 | 
			
		||||
    endif ()
 | 
			
		||||
 | 
			
		||||
    target_compile_definitions(spdlog PUBLIC SPDLOG_FMT_EXTERNAL)
 | 
			
		||||
    target_link_libraries(spdlog PUBLIC fmt::fmt)
 | 
			
		||||
 | 
			
		||||
    target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_FMT_EXTERNAL)
 | 
			
		||||
    target_link_libraries(spdlog_header_only INTERFACE fmt::fmt)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# build binries
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
if(SPDLOG_BUILD_EXAMPLES)
 | 
			
		||||
    add_subdirectory(example)
 | 
			
		||||
endif()
 | 
			
		||||
@@ -97,10 +114,43 @@ endif()
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# install
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
install(DIRECTORY ${HEADER_BASE} DESTINATION include)
 | 
			
		||||
install(TARGETS spdlog_static ARCHIVE DESTINATION lib)
 | 
			
		||||
if (SPDLOG_INSTALL)
 | 
			
		||||
    set(project_config_in "${CMAKE_CURRENT_LIST_DIR}/cmake/spdlogConfig.cmake.in")
 | 
			
		||||
    set(project_config_out "${CMAKE_CURRENT_BINARY_DIR}/spdlogConfig.cmake")
 | 
			
		||||
    set(config_targets_file "spdlogConfigTargets.cmake")
 | 
			
		||||
    set(version_config_file "${CMAKE_CURRENT_BINARY_DIR}/spdlogConfigVersion.cmake")
 | 
			
		||||
    set(export_dest_dir lib/spdlog/cmake)
 | 
			
		||||
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    # lib in include files
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    install(DIRECTORY include/ DESTINATION include)
 | 
			
		||||
    install(TARGETS spdlog spdlog_header_only EXPORT spdlog DESTINATION lib)
 | 
			
		||||
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    # package and version files
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    install(EXPORT spdlog
 | 
			
		||||
            DESTINATION ${export_dest_dir}
 | 
			
		||||
            NAMESPACE spdlog::
 | 
			
		||||
            FILE ${config_targets_file})
 | 
			
		||||
 | 
			
		||||
    include(CMakePackageConfigHelpers)
 | 
			
		||||
    configure_file("${project_config_in}" "${project_config_out}" @ONLY)
 | 
			
		||||
    write_basic_package_version_file("${version_config_file}" COMPATIBILITY SameMajorVersion)
 | 
			
		||||
    install(FILES
 | 
			
		||||
            "${project_config_out}"
 | 
			
		||||
            "${version_config_file}" DESTINATION "${export_dest_dir}")
 | 
			
		||||
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    # Support creation of installable packages
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    include(cmake/SpdlogCPack.cmake)
 | 
			
		||||
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    # register project in CMake user registry - disabled by default since the
 | 
			
		||||
    # installed/packaged version of the project is preferred.
 | 
			
		||||
    #---------------------------------------------------------------------------------------
 | 
			
		||||
    export(PACKAGE spdlog)
 | 
			
		||||
endif ()
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# register project in CMake user registry
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
export(PACKAGE ${PROJECT_NAME})
 | 
			
		||||
 
 | 
			
		||||
@@ -1,25 +1,5 @@
 | 
			
		||||
# *************************************************************************/
 | 
			
		||||
# * Copyright (c) 2015 Ruslan Baratov.                                    */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * Permission is hereby granted, free of charge, to any person obtaining */
 | 
			
		||||
# * a copy of this software and associated documentation files (the       */
 | 
			
		||||
# * "Software"), to deal in the Software without restriction, including   */
 | 
			
		||||
# * without limitation the rights to use, copy, modify, merge, publish,   */
 | 
			
		||||
# * distribute, sublicense, and/or sell copies of the Software, and to    */
 | 
			
		||||
# * permit persons to whom the Software is furnished to do so, subject to */
 | 
			
		||||
# * the following conditions:                                             */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * The above copyright notice and this permission notice shall be        */
 | 
			
		||||
# * included in all copies or substantial portions of the Software.       */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
 | 
			
		||||
# * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
 | 
			
		||||
# * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
 | 
			
		||||
# * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
 | 
			
		||||
# * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
 | 
			
		||||
# * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
 | 
			
		||||
# * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 | 
			
		||||
# *************************************************************************/
 | 
			
		||||
# Copyright(c) 2019 spdlog authors
 | 
			
		||||
# Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | 
			
		||||
 | 
			
		||||
cmake_minimum_required(VERSION 3.1)
 | 
			
		||||
project(SpdlogBench CXX)
 | 
			
		||||
@@ -33,16 +13,16 @@ find_package(Threads REQUIRED)
 | 
			
		||||
find_package(benchmark CONFIG REQUIRED)
 | 
			
		||||
 | 
			
		||||
add_executable(bench bench.cpp)
 | 
			
		||||
target_link_libraries(bench PRIVATE spdlog::static Threads::Threads)
 | 
			
		||||
target_link_libraries(bench PRIVATE spdlog::spdlog)
 | 
			
		||||
 | 
			
		||||
add_executable(async_bench async_bench.cpp)
 | 
			
		||||
target_link_libraries(async_bench PRIVATE spdlog::static Threads::Threads)
 | 
			
		||||
target_link_libraries(async_bench PRIVATE spdlog::spdlog)
 | 
			
		||||
 | 
			
		||||
add_executable(latency latency.cpp)
 | 
			
		||||
target_link_libraries(latency PRIVATE benchmark::benchmark spdlog::static Threads::Threads)
 | 
			
		||||
target_link_libraries(latency PRIVATE benchmark::benchmark spdlog::spdlog)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
add_executable(formatter-bench formatter-bench.cpp)
 | 
			
		||||
target_link_libraries(formatter-bench PRIVATE benchmark::benchmark spdlog::static Threads::Threads)
 | 
			
		||||
target_link_libraries(formatter-bench PRIVATE benchmark::benchmark spdlog::spdlog)
 | 
			
		||||
 | 
			
		||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
# *************************************************************************/
 | 
			
		||||
# * Copyright (c) 2015 Ruslan Baratov.                                    */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * Permission is hereby granted, free of charge, to any person obtaining */
 | 
			
		||||
# * a copy of this software and associated documentation files (the       */
 | 
			
		||||
# * "Software"), to deal in the Software without restriction, including   */
 | 
			
		||||
# * without limitation the rights to use, copy, modify, merge, publish,   */
 | 
			
		||||
# * distribute, sublicense, and/or sell copies of the Software, and to    */
 | 
			
		||||
# * permit persons to whom the Software is furnished to do so, subject to */
 | 
			
		||||
# * the following conditions:                                             */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * The above copyright notice and this permission notice shall be        */
 | 
			
		||||
# * included in all copies or substantial portions of the Software.       */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
 | 
			
		||||
# * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
 | 
			
		||||
# * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
 | 
			
		||||
# * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
 | 
			
		||||
# * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
 | 
			
		||||
# * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
 | 
			
		||||
# * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 | 
			
		||||
# *************************************************************************/
 | 
			
		||||
 | 
			
		||||
set(SPDLOG_FMT_EXTERNAL @SPDLOG_FMT_EXTERNAL@)
 | 
			
		||||
 | 
			
		||||
include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
 | 
			
		||||
 | 
			
		||||
if(SPDLOG_FMT_EXTERNAL)
 | 
			
		||||
    include(CMakeFindDependencyMacro)
 | 
			
		||||
    find_dependency(fmt CONFIG)
 | 
			
		||||
endif()
 | 
			
		||||
							
								
								
									
										26
									
								
								cmake/SpdlogCPack.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								cmake/SpdlogCPack.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
set(CPACK_GENERATOR
 | 
			
		||||
    TGZ
 | 
			
		||||
    ZIP
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
 | 
			
		||||
set(CPACK_INSTALL_CMAKE_PROJECTS
 | 
			
		||||
    "${CMAKE_BINARY_DIR}"
 | 
			
		||||
    "${PROJECT_NAME}"
 | 
			
		||||
    ALL
 | 
			
		||||
    .
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
set(CPACK_PROJECT_URL "https://github.com/gabime/spdlog")
 | 
			
		||||
set(CPACK_PACKAGE_VENDOR "Gabi Melman")
 | 
			
		||||
set(CPACK_PACKAGE_CONTACT "Gabi Melman <gmelman1@gmail.com>")
 | 
			
		||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
 | 
			
		||||
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
 | 
			
		||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
 | 
			
		||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
 | 
			
		||||
if (PROJECT_VERSION_TWEAK)
 | 
			
		||||
    set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}.${PROJECT_VERSION_TWEAK})
 | 
			
		||||
endif ()
 | 
			
		||||
set(CPACK_PACKAGE_RELOCATABLE ON)
 | 
			
		||||
 | 
			
		||||
include(CPack)
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
prefix=@CMAKE_INSTALL_PREFIX@
 | 
			
		||||
includedir=${prefix}/include
 | 
			
		||||
 | 
			
		||||
Name: @PROJECT_NAME@
 | 
			
		||||
Description: Super fast C++ logging library. 
 | 
			
		||||
Version: @PROJECT_VERSION@
 | 
			
		||||
							
								
								
									
										15
									
								
								cmake/spdlogConfig.cmake.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								cmake/spdlogConfig.cmake.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
# Copyright(c) 2019 spdlog authors
 | 
			
		||||
# Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | 
			
		||||
 | 
			
		||||
find_package(Threads REQUIRED)
 | 
			
		||||
 | 
			
		||||
set(SPDLOG_FMT_EXTERNAL @SPDLOG_FMT_EXTERNAL@)
 | 
			
		||||
set(config_targets_file @config_targets_file@)
 | 
			
		||||
 | 
			
		||||
if(SPDLOG_FMT_EXTERNAL)
 | 
			
		||||
    include(CMakeFindDependencyMacro)
 | 
			
		||||
    find_dependency(fmt CONFIG)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
include("${CMAKE_CURRENT_LIST_DIR}/${config_targets_file}")
 | 
			
		||||
@@ -1,49 +1,31 @@
 | 
			
		||||
# *************************************************************************/
 | 
			
		||||
# * Copyright (c) 2015 Ruslan Baratov.                                    */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * Permission is hereby granted, free of charge, to any person obtaining */
 | 
			
		||||
# * a copy of this software and associated documentation files (the       */
 | 
			
		||||
# * "Software"), to deal in the Software without restriction, including   */
 | 
			
		||||
# * without limitation the rights to use, copy, modify, merge, publish,   */
 | 
			
		||||
# * distribute, sublicense, and/or sell copies of the Software, and to    */
 | 
			
		||||
# * permit persons to whom the Software is furnished to do so, subject to */
 | 
			
		||||
# * the following conditions:                                             */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * The above copyright notice and this permission notice shall be        */
 | 
			
		||||
# * included in all copies or substantial portions of the Software.       */
 | 
			
		||||
# *                                                                       */
 | 
			
		||||
# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
 | 
			
		||||
# * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
 | 
			
		||||
# * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
 | 
			
		||||
# * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
 | 
			
		||||
# * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
 | 
			
		||||
# * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
 | 
			
		||||
# * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 | 
			
		||||
# *************************************************************************/
 | 
			
		||||
# Copyright(c) 2019 spdlog authors
 | 
			
		||||
# Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | 
			
		||||
 | 
			
		||||
cmake_minimum_required(VERSION 3.1)
 | 
			
		||||
project(SpdlogExamples CXX)
 | 
			
		||||
 | 
			
		||||
if(NOT TARGET spdlog)
 | 
			
		||||
  # Stand-alone build
 | 
			
		||||
  find_package(spdlog CONFIG REQUIRED)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
find_package(Threads REQUIRED)
 | 
			
		||||
 | 
			
		||||
add_executable(example example.cpp)
 | 
			
		||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
 | 
			
		||||
    find_library(log-lib log)
 | 
			
		||||
    target_link_libraries(example spdlog::static Threads::Threads log)
 | 
			
		||||
if(TARGET spdlog)
 | 
			
		||||
    # If we're running this example as part of the primary spdlog applciation
 | 
			
		||||
    # then add an alias. This allows us to use the same "spdlog::spdlog"
 | 
			
		||||
    # below that a user would use (with the namespace)
 | 
			
		||||
    add_library(spdlog::spdlog ALIAS spdlog)
 | 
			
		||||
    add_library(spdlog::spdlog_header_only ALIAS spdlog_header_only)
 | 
			
		||||
else()
 | 
			
		||||
    target_link_libraries(example spdlog::static Threads::Threads)
 | 
			
		||||
    # Stand-alone build
 | 
			
		||||
    find_package(spdlog REQUIRED)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# Example of using pre-compiled library
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
add_executable(example example.cpp)
 | 
			
		||||
target_link_libraries(example spdlog::spdlog)
 | 
			
		||||
 | 
			
		||||
add_executable(multisink multisink.cpp)
 | 
			
		||||
target_link_libraries(multisink spdlog::static Threads::Threads)
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
# Example of using header-only library
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
add_executable(example_header_only example.cpp)
 | 
			
		||||
target_link_libraries(example_header_only spdlog::spdlog_header_only)
 | 
			
		||||
 | 
			
		||||
# Create logs directory
 | 
			
		||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")
 | 
			
		||||
 | 
			
		||||
enable_testing()
 | 
			
		||||
add_test(NAME example COMMAND example)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
# Setup a project
 | 
			
		||||
LOCAL_PATH := $(call my-dir)
 | 
			
		||||
include $(CLEAR_VARS)
 | 
			
		||||
 | 
			
		||||
LOCAL_MODULE := example
 | 
			
		||||
LOCAL_SRC_FILES := example.cpp
 | 
			
		||||
LOCAL_CPPFLAGS += -Wall -Wshadow -Wextra -pedantic -std=c++11 -fPIE -pie
 | 
			
		||||
LOCAL_LDFLAGS +=  -fPIE -pie
 | 
			
		||||
 | 
			
		||||
# Add exception support and set path for spdlog's headers
 | 
			
		||||
LOCAL_CPPFLAGS += -fexceptions -I../include
 | 
			
		||||
# Use android's log library
 | 
			
		||||
LOCAL_LDFLAGS += -llog
 | 
			
		||||
 | 
			
		||||
include $(BUILD_EXECUTABLE)
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
# Exceptions are used in spdlog. Link to an exception-ready C++ runtime.
 | 
			
		||||
APP_STL = gnustl_static
 | 
			
		||||
@@ -1,157 +0,0 @@
 | 
			
		||||
//
 | 
			
		||||
// Copyright(c) 2015 Gabi Melman.
 | 
			
		||||
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | 
			
		||||
//
 | 
			
		||||
//
 | 
			
		||||
// spdlog usage example
 | 
			
		||||
//
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#define SPDLOG_TRACE_ON
 | 
			
		||||
#define SPDLOG_DEBUG_ON
 | 
			
		||||
 | 
			
		||||
#include "spdlog/spdlog.h"
 | 
			
		||||
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <memory>
 | 
			
		||||
 | 
			
		||||
void async_example();
 | 
			
		||||
void syslog_example();
 | 
			
		||||
void android_example();
 | 
			
		||||
void user_defined_example();
 | 
			
		||||
void err_handler_example();
 | 
			
		||||
 | 
			
		||||
namespace spd = spdlog;
 | 
			
		||||
int main(int, char *[])
 | 
			
		||||
{
 | 
			
		||||
    try
 | 
			
		||||
    {
 | 
			
		||||
        // Console logger with color
 | 
			
		||||
        auto console = spd::stdout_color_mt("console");
 | 
			
		||||
        console->info("Welcome to spdlog!");
 | 
			
		||||
        console->error("Some error message with arg{}..", 1);
 | 
			
		||||
 | 
			
		||||
        // Formatting examples
 | 
			
		||||
        console->warn("Easy padding in numbers like {:08d}", 12);
 | 
			
		||||
        console->critical("Support for int: {0:d};  hex: {0:x};  oct: {0:o}; bin: {0:b}", 42);
 | 
			
		||||
        console->info("Support for floats {:03.2f}", 1.23456);
 | 
			
		||||
        console->info("Positional args are {1} {0}..", "too", "supported");
 | 
			
		||||
        console->info("{:<30}", "left aligned");
 | 
			
		||||
 | 
			
		||||
        spd::get("console")->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name) function");
 | 
			
		||||
 | 
			
		||||
        // Create basic file logger (not rotated)
 | 
			
		||||
        auto my_logger = spd::basic_logger_mt("basic_logger", "logs/basic-log.txt");
 | 
			
		||||
        my_logger->info("Some log message");
 | 
			
		||||
 | 
			
		||||
        // Create a file rotating logger with 5mb size max and 3 rotated files
 | 
			
		||||
        auto rotating_logger = spd::rotating_logger_mt("some_logger_name", "logs/rotating.txt", 1048576 * 5, 3);
 | 
			
		||||
        for (int i = 0; i < 10; ++i)
 | 
			
		||||
            rotating_logger->info("{} * {} equals {:>10}", i, i, i * i);
 | 
			
		||||
 | 
			
		||||
        // Create a daily logger - a new file is created every day on 2:30am
 | 
			
		||||
        auto daily_logger = spd::daily_logger_mt("daily_logger", "logs/daily.txt", 2, 30);
 | 
			
		||||
        // trigger flush if the log severity is error or higher
 | 
			
		||||
        daily_logger->flush_on(spd::level::err);
 | 
			
		||||
        daily_logger->info(123.44);
 | 
			
		||||
 | 
			
		||||
        // Customize msg format for all messages
 | 
			
		||||
        spd::set_pattern("*** [%H:%M:%S %z] [thread %t] %v ***");
 | 
			
		||||
        rotating_logger->info("This is another message with custom format");
 | 
			
		||||
 | 
			
		||||
        // Runtime log levels
 | 
			
		||||
        spd::set_level(spd::level::info); // Set global log level to info
 | 
			
		||||
        console->debug("This message should not be displayed!");
 | 
			
		||||
        console->set_level(spd::level::debug); // Set specific logger's log level
 | 
			
		||||
        console->debug("This message should be displayed..");
 | 
			
		||||
 | 
			
		||||
        // Compile time log levels
 | 
			
		||||
        // define SPDLOG_DEBUG_ON or SPDLOG_TRACE_ON
 | 
			
		||||
        SPDLOG_TRACE(console, "Enabled only #ifdef SPDLOG_TRACE_ON..{} ,{}", 1, 3.23);
 | 
			
		||||
        SPDLOG_DEBUG(console, "Enabled only #ifdef SPDLOG_DEBUG_ON.. {} ,{}", 1, 3.23);
 | 
			
		||||
 | 
			
		||||
        // Asynchronous logging is very fast..
 | 
			
		||||
        // Just call spdlog::set_async_mode(q_size) and all created loggers from now on will be asynchronous..
 | 
			
		||||
        async_example();
 | 
			
		||||
 | 
			
		||||
        // syslog example. linux/osx only
 | 
			
		||||
        syslog_example();
 | 
			
		||||
 | 
			
		||||
        // android example. compile with NDK
 | 
			
		||||
        android_example();
 | 
			
		||||
 | 
			
		||||
        // Log user-defined types example
 | 
			
		||||
        user_defined_example();
 | 
			
		||||
 | 
			
		||||
        // Change default log error handler
 | 
			
		||||
        err_handler_example();
 | 
			
		||||
 | 
			
		||||
        // Apply a function on all registered loggers
 | 
			
		||||
        spd::apply_all([&](std::shared_ptr<spdlog::logger> l) { l->info("End of example."); });
 | 
			
		||||
 | 
			
		||||
        // Release and close all loggers
 | 
			
		||||
        spdlog::drop_all();
 | 
			
		||||
    }
 | 
			
		||||
    // Exceptions will only be thrown upon failed logger or sink construction (not during logging)
 | 
			
		||||
    catch (const spd::spdlog_ex &ex)
 | 
			
		||||
    {
 | 
			
		||||
        std::cout << "Log init failed: " << ex.what() << std::endl;
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void async_example()
 | 
			
		||||
{
 | 
			
		||||
    size_t q_size = 4096; // queue size must be power of 2
 | 
			
		||||
    spdlog::set_async_mode(q_size);
 | 
			
		||||
    auto async_file = spd::daily_logger_st("async_file_logger", "logs/async_log.txt");
 | 
			
		||||
    for (int i = 0; i < 100; ++i)
 | 
			
		||||
        async_file->info("Async message #{}", i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// syslog example (linux/osx/freebsd)
 | 
			
		||||
void syslog_example()
 | 
			
		||||
{
 | 
			
		||||
#ifdef SPDLOG_ENABLE_SYSLOG
 | 
			
		||||
    std::string ident = "spdlog-example";
 | 
			
		||||
    auto syslog_logger = spd::syslog_logger("syslog", ident, LOG_PID);
 | 
			
		||||
    syslog_logger->warn("This is warning that will end up in syslog.");
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Android example
 | 
			
		||||
void android_example()
 | 
			
		||||
{
 | 
			
		||||
#if defined(__ANDROID__)
 | 
			
		||||
    std::string tag = "spdlog-android";
 | 
			
		||||
    auto android_logger = spd::android_logger("android", tag);
 | 
			
		||||
    android_logger->critical("Use \"adb shell logcat\" to view this message.");
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// user defined types logging by implementing operator<<
 | 
			
		||||
struct my_type
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
    template<typename OStream>
 | 
			
		||||
    friend OStream &operator<<(OStream &os, const my_type &c)
 | 
			
		||||
    {
 | 
			
		||||
        return os << "[my_type i=" << c.i << "]";
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#include "spdlog/fmt/ostr.h" // must be included
 | 
			
		||||
void user_defined_example()
 | 
			
		||||
{
 | 
			
		||||
    spd::get("console")->info("user defined type: {}", my_type{14});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// custom error handler
 | 
			
		||||
//
 | 
			
		||||
void err_handler_example()
 | 
			
		||||
{
 | 
			
		||||
    // can be set globaly or per logger(logger->set_error_handler(..))
 | 
			
		||||
    spdlog::set_error_handler([](const std::string &msg) { std::cerr << "my err handler: " << msg << std::endl; });
 | 
			
		||||
    spd::get("console")->info("some invalid message to trigger an error {}{}{}{}", 3);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								example/logs/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								example/logs/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
			
		||||
*.txt
 | 
			
		||||
@@ -1,47 +0,0 @@
 | 
			
		||||
#include "spdlog/spdlog.h"
 | 
			
		||||
#include "spdlog/sinks/basic_file_sink.h"
 | 
			
		||||
#include "spdlog/sinks/stdout_sinks.h"
 | 
			
		||||
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <memory>
 | 
			
		||||
 | 
			
		||||
int main(int, char *[])
 | 
			
		||||
{
 | 
			
		||||
    bool enable_debug = true;
 | 
			
		||||
    try
 | 
			
		||||
    {
 | 
			
		||||
        // This other example use a single logger with multiple sinks.
 | 
			
		||||
        // This means that the same log_msg is forwarded to multiple sinks;
 | 
			
		||||
        // Each sink can have it's own log level and a message will be logged.
 | 
			
		||||
        std::vector<spdlog::sink_ptr> sinks;
 | 
			
		||||
        sinks.push_back(std::make_shared<spdlog::sinks::stdout_sink_mt>());
 | 
			
		||||
        sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("./log_regular_file.txt"));
 | 
			
		||||
        sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("./log_debug_file.txt"));
 | 
			
		||||
 | 
			
		||||
        spdlog::logger console_multisink("multisink", sinks.begin(), sinks.end());
 | 
			
		||||
        console_multisink.set_level(spdlog::level::warn);
 | 
			
		||||
 | 
			
		||||
        sinks[0]->set_level(spdlog::level::trace); // console. Allow everything.  Default value
 | 
			
		||||
        sinks[1]->set_level(spdlog::level::trace); //  regular file. Allow everything.  Default value
 | 
			
		||||
        sinks[2]->set_level(spdlog::level::off);   //  regular file. Ignore everything.
 | 
			
		||||
 | 
			
		||||
        console_multisink.warn("warn: will print only on console and regular file");
 | 
			
		||||
 | 
			
		||||
        if (enable_debug)
 | 
			
		||||
        {
 | 
			
		||||
            console_multisink.set_level(spdlog::level::debug); // level of the logger
 | 
			
		||||
            sinks[1]->set_level(spdlog::level::debug);         // regular file
 | 
			
		||||
            sinks[2]->set_level(spdlog::level::debug);         // debug file
 | 
			
		||||
        }
 | 
			
		||||
        console_multisink.debug("Debug: you should see this on console and both files");
 | 
			
		||||
 | 
			
		||||
        // Release and close all loggers
 | 
			
		||||
        spdlog::drop_all();
 | 
			
		||||
    }
 | 
			
		||||
    // Exceptions will only be thrown upon failed logger or sink construction (not during logging)
 | 
			
		||||
    catch (const spdlog::spdlog_ex &ex)
 | 
			
		||||
    {
 | 
			
		||||
        std::cout << "Log init failed: " << ex.what() << std::endl;
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
//
 | 
			
		||||
// Copyright(c) 2015 Gabi Melman.
 | 
			
		||||
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <iomanip>
 | 
			
		||||
#include <locale>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
 | 
			
		||||
namespace utils {
 | 
			
		||||
 | 
			
		||||
template<typename T>
 | 
			
		||||
inline std::string format(const T &value)
 | 
			
		||||
{
 | 
			
		||||
    static std::locale loc("");
 | 
			
		||||
    std::stringstream ss;
 | 
			
		||||
    ss.imbue(loc);
 | 
			
		||||
    ss << value;
 | 
			
		||||
    return ss.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<>
 | 
			
		||||
inline std::string format(const double &value)
 | 
			
		||||
{
 | 
			
		||||
    static std::locale loc("");
 | 
			
		||||
    std::stringstream ss;
 | 
			
		||||
    ss.imbue(loc);
 | 
			
		||||
    ss << std::fixed << std::setprecision(1) << value;
 | 
			
		||||
    return ss.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace utils
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
#include <locale>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SPDLOG_STATIC_LIB
 | 
			
		||||
#ifdef SPDLOG_COMPILED_LIB
 | 
			
		||||
#undef SPDLOG_HEADER_ONLY
 | 
			
		||||
#define SPDLOG_INLINE
 | 
			
		||||
#else
 | 
			
		||||
@@ -216,4 +216,4 @@ std::unique_ptr<T> make_unique(Args &&... args)
 | 
			
		||||
 | 
			
		||||
#ifdef SPDLOG_HEADER_ONLY
 | 
			
		||||
#include "common-inl.h"
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,6 @@ protected:
 | 
			
		||||
} // namespace sinks
 | 
			
		||||
} // namespace spdlog
 | 
			
		||||
 | 
			
		||||
#ifndef SPDLOG_STATIC_LIB
 | 
			
		||||
#ifndef SPDLOG_COMPILED_LIB
 | 
			
		||||
#include "base_sink-inl.h"
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
// Copyright(c) 2015-present Gabi Melman & spdlog contributors.
 | 
			
		||||
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | 
			
		||||
 | 
			
		||||
#ifndef SPDLOG_STATIC_LIB
 | 
			
		||||
#error Please define SPDLOG_STATIC_LIB to compile this file.
 | 
			
		||||
#ifndef SPDLOG_COMPILED_LIB
 | 
			
		||||
#error Please define SPDLOG_COMPILED_LIB to compile this file.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <mutex>
 | 
			
		||||
@@ -100,4 +100,4 @@ template FMT_API int internal::char_traits<wchar_t>::format_float(wchar_t *, std
 | 
			
		||||
template FMT_API std::wstring internal::vformat<wchar_t>(wstring_view, basic_format_args<wformat_context>);
 | 
			
		||||
FMT_END_NAMESPACE
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,3 @@
 | 
			
		||||
project(spdlog-utests CXX)
 | 
			
		||||
 | 
			
		||||
find_package(Threads REQUIRED)
 | 
			
		||||
 | 
			
		||||
set(SPDLOG_UTESTS_SOURCES
 | 
			
		||||
    test_errors.cpp
 | 
			
		||||
    test_file_helper.cpp
 | 
			
		||||
@@ -19,11 +15,10 @@ set(SPDLOG_UTESTS_SOURCES
 | 
			
		||||
    test_sink.h
 | 
			
		||||
    test_fmt_helper.cpp)
 | 
			
		||||
 | 
			
		||||
add_executable(${PROJECT_NAME} ${SPDLOG_UTESTS_SOURCES})
 | 
			
		||||
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
 | 
			
		||||
target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::static)
 | 
			
		||||
add_executable(spdlog-utests ${SPDLOG_UTESTS_SOURCES})
 | 
			
		||||
target_link_libraries(spdlog-utests spdlog)
 | 
			
		||||
 | 
			
		||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")
 | 
			
		||||
 | 
			
		||||
enable_testing()
 | 
			
		||||
add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})
 | 
			
		||||
add_test(NAME spdlog-utests COMMAND spdlog-utests)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user