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) |     set(SPDLOG_MASTER_PROJECT OFF) | ||||||
| endif() | 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_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_BENCH "Build benchmarks (Requires https://github.com/google/benchmark.git to be installed)" OFF) | ||||||
| option(SPDLOG_BUILD_TESTS "Build tests" ON) | 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}) | message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) | ||||||
| 
 | 
 | ||||||
| # Build static lib | # Build library | ||||||
| set(SRC_BASE "${CMAKE_CURRENT_SOURCE_DIR}/src") | add_library(spdlog src/spdlog.cpp) | ||||||
| set(STATIC_SRC_FILES "${SRC_BASE}/spdlog.cpp") | add_library(spdlog::spdlog ALIAS spdlog) | ||||||
| add_library(spdlog_static STATIC ${STATIC_SRC_FILES}) | target_compile_definitions(spdlog PUBLIC SPDLOG_COMPILED_LIB ) | ||||||
| add_library(spdlog::static ALIAS spdlog_static) | target_include_directories(spdlog PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>") | ||||||
| target_compile_definitions(spdlog_static PUBLIC SPDLOG_STATIC_LIB ) | set_target_properties(spdlog PROPERTIES OUTPUT_NAME "spdlog") | ||||||
| target_include_directories(spdlog_static PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>") | set_target_properties(spdlog PROPERTIES DEBUG_POSTFIX "-debug") | ||||||
| set_target_properties(spdlog_static PROPERTIES OUTPUT_NAME "spdlog") |  | ||||||
| set_target_properties(spdlog_static PROPERTIES DEBUG_POSTFIX "-debug") |  | ||||||
| 
 | 
 | ||||||
| # Headr only | # Headr only | ||||||
| add_library(spdlog_header_only INTERFACE) | add_library(spdlog_header_only INTERFACE) | ||||||
| @ -75,8 +74,8 @@ if(SPDLOG_FMT_EXTERNAL AND NOT TARGET fmt::fmt) | |||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| if(SPDLOG_FMT_EXTERNAL) | if(SPDLOG_FMT_EXTERNAL) | ||||||
|     target_compile_definitions(spdlog_static INTERFACE SPDLOG_FMT_EXTERNAL) |     target_compile_definitions(spdlog INTERFACE SPDLOG_FMT_EXTERNAL) | ||||||
|     target_link_libraries(spdlog_static INTERFACE fmt::fmt) |     target_link_libraries(spdlog INTERFACE fmt::fmt) | ||||||
|     target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_FMT_EXTERNAL) |     target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_FMT_EXTERNAL) | ||||||
|     target_link_libraries(spdlog_header_only INTERFACE fmt::fmt) |     target_link_libraries(spdlog_header_only INTERFACE fmt::fmt) | ||||||
| endif() | endif() | ||||||
| @ -98,7 +97,7 @@ endif() | |||||||
| # install | # install | ||||||
| #--------------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------------- | ||||||
| install(DIRECTORY ${HEADER_BASE} DESTINATION include) | install(DIRECTORY ${HEADER_BASE} DESTINATION include) | ||||||
| install(TARGETS spdlog_static ARCHIVE DESTINATION lib) | install(TARGETS spdlog DESTINATION lib) | ||||||
| 
 | 
 | ||||||
| #--------------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------------- | ||||||
| # register project in CMake user registry | # register project in CMake user registry | ||||||
|  | |||||||
| @ -33,16 +33,16 @@ find_package(Threads REQUIRED) | |||||||
| find_package(benchmark CONFIG REQUIRED) | find_package(benchmark CONFIG REQUIRED) | ||||||
| 
 | 
 | ||||||
| add_executable(bench bench.cpp) | 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) | 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) | 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) | 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") | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ | |||||||
| cmake_minimum_required(VERSION 3.1) | cmake_minimum_required(VERSION 3.1) | ||||||
| project(SpdlogExamples CXX) | project(SpdlogExamples CXX) | ||||||
| 
 | 
 | ||||||
| if(NOT TARGET spdlog) | if(NOT TARGET spdlog::spdlog) | ||||||
|   # Stand-alone build |   # Stand-alone build | ||||||
|   find_package(spdlog CONFIG REQUIRED) |   find_package(spdlog CONFIG REQUIRED) | ||||||
| endif() | endif() | ||||||
| @ -34,14 +34,14 @@ find_package(Threads REQUIRED) | |||||||
| add_executable(example example.cpp) | add_executable(example example.cpp) | ||||||
| if(CMAKE_SYSTEM_NAME STREQUAL "Android") | if(CMAKE_SYSTEM_NAME STREQUAL "Android") | ||||||
|     find_library(log-lib log) |     find_library(log-lib log) | ||||||
|     target_link_libraries(example spdlog::static Threads::Threads log) |     target_link_libraries(example spdlog::spdlog Threads::Threads log) | ||||||
| else() | else() | ||||||
|     target_link_libraries(example spdlog::static Threads::Threads) |     target_link_libraries(example spdlog::spdlog Threads::Threads) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| add_executable(multisink multisink.cpp) | 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") | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ | |||||||
| #include <locale> | #include <locale> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef SPDLOG_STATIC_LIB | #ifdef SPDLOG_COMPILED_LIB | ||||||
| #undef SPDLOG_HEADER_ONLY | #undef SPDLOG_HEADER_ONLY | ||||||
| #define SPDLOG_INLINE | #define SPDLOG_INLINE | ||||||
| #else | #else | ||||||
|  | |||||||
| @ -37,6 +37,6 @@ protected: | |||||||
| } // namespace sinks
 | } // namespace sinks
 | ||||||
| } // namespace spdlog
 | } // namespace spdlog
 | ||||||
| 
 | 
 | ||||||
| #ifndef SPDLOG_STATIC_LIB | #ifndef SPDLOG_COMPILED_LIB | ||||||
| #include "base_sink-inl.h" | #include "base_sink-inl.h" | ||||||
| #endif | #endif | ||||||
| @ -1,8 +1,8 @@ | |||||||
| // Copyright(c) 2015-present Gabi Melman & spdlog contributors.
 | // Copyright(c) 2015-present Gabi Melman & spdlog contributors.
 | ||||||
| // Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | // Distributed under the MIT License (http://opensource.org/licenses/MIT)
 | ||||||
| 
 | 
 | ||||||
| #ifndef SPDLOG_STATIC_LIB | #ifndef SPDLOG_COMPILED_LIB | ||||||
| #error Please define SPDLOG_STATIC_LIB to compile this file. | #error Please define SPDLOG_COMPILED_LIB to compile this file. | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #include <mutex> | #include <mutex> | ||||||
|  | |||||||
| @ -21,7 +21,7 @@ set(SPDLOG_UTESTS_SOURCES | |||||||
| 
 | 
 | ||||||
| add_executable(${PROJECT_NAME} ${SPDLOG_UTESTS_SOURCES}) | add_executable(${PROJECT_NAME} ${SPDLOG_UTESTS_SOURCES}) | ||||||
| target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads) | 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") | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user