Allow user to choose between static or shared library
This commit is contained in:
		
							parent
							
								
									dbcbeb7a57
								
							
						
					
					
						commit
						8dd85285e7
					
				| @ -45,6 +45,7 @@ else() | ||||
|     set(SPDLOG_MASTER_PROJECT OFF) | ||||
| endif() | ||||
| 
 | ||||
| option(BUILD_SHARED_LIBS "Global flag to cause add_library to create shared libraries if on." ON) | ||||
| 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) | ||||
| @ -55,15 +56,13 @@ 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") | ||||
| # Build library | ||||
| add_library(spdlog src/spdlog.cpp) | ||||
| add_library(spdlog::spdlog ALIAS spdlog) | ||||
| target_compile_definitions(spdlog PUBLIC SPDLOG_COMPILED_LIB ) | ||||
| target_include_directories(spdlog PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>") | ||||
| set_target_properties(spdlog PROPERTIES OUTPUT_NAME "spdlog") | ||||
| set_target_properties(spdlog PROPERTIES DEBUG_POSTFIX "-debug") | ||||
| 
 | ||||
| # Headr only | ||||
| add_library(spdlog_header_only INTERFACE) | ||||
| @ -75,8 +74,8 @@ if(SPDLOG_FMT_EXTERNAL AND NOT TARGET fmt::fmt) | ||||
| endif() | ||||
| 
 | ||||
| if(SPDLOG_FMT_EXTERNAL) | ||||
|     target_compile_definitions(spdlog_static INTERFACE SPDLOG_FMT_EXTERNAL) | ||||
|     target_link_libraries(spdlog_static INTERFACE fmt::fmt) | ||||
|     target_compile_definitions(spdlog INTERFACE SPDLOG_FMT_EXTERNAL) | ||||
|     target_link_libraries(spdlog INTERFACE fmt::fmt) | ||||
|     target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_FMT_EXTERNAL) | ||||
|     target_link_libraries(spdlog_header_only INTERFACE fmt::fmt) | ||||
| endif() | ||||
| @ -98,7 +97,7 @@ endif() | ||||
| # install | ||||
| #--------------------------------------------------------------------------------------- | ||||
| install(DIRECTORY ${HEADER_BASE} DESTINATION include) | ||||
| install(TARGETS spdlog_static ARCHIVE DESTINATION lib) | ||||
| install(TARGETS spdlog DESTINATION lib) | ||||
| 
 | ||||
| #--------------------------------------------------------------------------------------- | ||||
| # register project in CMake user registry | ||||
|  | ||||
| @ -33,16 +33,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 Threads::Threads) | ||||
| 
 | ||||
| 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 Threads::Threads) | ||||
| 
 | ||||
| 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 Threads::Threads) | ||||
| 
 | ||||
| 
 | ||||
| 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 Threads::Threads) | ||||
| 
 | ||||
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||
|  | ||||
| @ -24,7 +24,7 @@ | ||||
| cmake_minimum_required(VERSION 3.1) | ||||
| project(SpdlogExamples CXX) | ||||
| 
 | ||||
| if(NOT TARGET spdlog) | ||||
| if(NOT TARGET spdlog::spdlog) | ||||
|   # Stand-alone build | ||||
|   find_package(spdlog CONFIG REQUIRED) | ||||
| endif() | ||||
| @ -34,14 +34,14 @@ 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) | ||||
|     target_link_libraries(example spdlog::spdlog Threads::Threads log) | ||||
| else() | ||||
|     target_link_libraries(example spdlog::static Threads::Threads) | ||||
|     target_link_libraries(example spdlog::spdlog Threads::Threads) | ||||
| endif() | ||||
| 
 | ||||
| 
 | ||||
| add_executable(multisink multisink.cpp) | ||||
| target_link_libraries(multisink spdlog::static Threads::Threads) | ||||
| target_link_libraries(multisink spdlog::spdlog Threads::Threads) | ||||
| 
 | ||||
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||
| 
 | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
| #include <locale> | ||||
| #endif | ||||
| 
 | ||||
| #ifdef SPDLOG_STATIC_LIB | ||||
| #ifdef SPDLOG_COMPILED_LIB | ||||
| #undef SPDLOG_HEADER_ONLY | ||||
| #define SPDLOG_INLINE | ||||
| #else | ||||
|  | ||||
| @ -37,6 +37,6 @@ protected: | ||||
| } // namespace sinks
 | ||||
| } // namespace spdlog
 | ||||
| 
 | ||||
| #ifndef SPDLOG_STATIC_LIB | ||||
| #ifndef SPDLOG_COMPILED_LIB | ||||
| #include "base_sink-inl.h" | ||||
| #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> | ||||
|  | ||||
| @ -21,7 +21,7 @@ set(SPDLOG_UTESTS_SOURCES | ||||
| 
 | ||||
| add_executable(${PROJECT_NAME} ${SPDLOG_UTESTS_SOURCES}) | ||||
| target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads) | ||||
| target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::static) | ||||
| target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::spdlog) | ||||
| 
 | ||||
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user