You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							2.0 KiB
						
					
					
				
								cmake_minimum_required(VERSION 3.0)
							 | 
						|
								
							 | 
						|
								# define the project
							 | 
						|
								project(nlohmann_json VERSION 2.0.5 LANGUAGES CXX)
							 | 
						|
								
							 | 
						|
								enable_testing()
							 | 
						|
								
							 | 
						|
								option(BuildTests "Build the unit tests" ON)
							 | 
						|
								
							 | 
						|
								# define project variables
							 | 
						|
								set(JSON_TARGET_NAME ${PROJECT_NAME})
							 | 
						|
								set(JSON_PACKAGE_NAME ${JSON_TARGET_NAME})
							 | 
						|
								set(JSON_TARGETS_FILENAME "${JSON_PACKAGE_NAME}Targets.cmake")
							 | 
						|
								set(JSON_CONFIG_FILENAME "${JSON_PACKAGE_NAME}Config.cmake")
							 | 
						|
								set(JSON_CONFIGVERSION_FILENAME "${JSON_PACKAGE_NAME}ConfigVersion.cmake")
							 | 
						|
								set(JSON_CONFIG_DESTINATION "cmake")
							 | 
						|
								set(JSON_INCLUDE_DESTINATION "include/nlohmann")
							 | 
						|
								
							 | 
						|
								# create and configure the library target
							 | 
						|
								add_library(${JSON_TARGET_NAME} INTERFACE)
							 | 
						|
								target_include_directories(${JSON_TARGET_NAME} INTERFACE
							 | 
						|
								  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
							 | 
						|
								  $<INSTALL_INTERFACE:${JSON_INCLUDE_DESTINATION}>)
							 | 
						|
								
							 | 
						|
								# create and configure the unit test target
							 | 
						|
								if (BuildTests)
							 | 
						|
								    add_subdirectory(test)
							 | 
						|
								endif()
							 | 
						|
								
							 | 
						|
								# generate a config and config version file for the package
							 | 
						|
								include(CMakePackageConfigHelpers)
							 | 
						|
								configure_package_config_file("cmake/config.cmake.in"
							 | 
						|
								    "${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIG_FILENAME}"
							 | 
						|
								    INSTALL_DESTINATION ${JSON_CONFIG_DESTINATION})
							 | 
						|
								write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIGVERSION_FILENAME}"
							 | 
						|
								    VERSION ${PROJECT_VERSION}
							 | 
						|
								    COMPATIBILITY SameMajorVersion)
							 | 
						|
								
							 | 
						|
								# export the library target and store build directory in package registry
							 | 
						|
								export(TARGETS ${JSON_TARGET_NAME}
							 | 
						|
									FILE "${CMAKE_CURRENT_BINARY_DIR}/${JSON_TARGETS_FILENAME}")
							 | 
						|
								export(PACKAGE ${JSON_PACKAGE_NAME})
							 | 
						|
								
							 | 
						|
								# install library target and config files
							 | 
						|
								install(TARGETS ${JSON_TARGET_NAME}
							 | 
						|
									EXPORT ${JSON_PACKAGE_NAME})
							 | 
						|
								install(FILES "src/json.hpp"
							 | 
						|
									DESTINATION ${JSON_INCLUDE_DESTINATION})
							 | 
						|
								install(EXPORT ${JSON_PACKAGE_NAME}
							 | 
						|
									FILE ${JSON_TARGETS_FILENAME}
							 | 
						|
									DESTINATION ${JSON_CONFIG_DESTINATION})
							 | 
						|
								install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIG_FILENAME}"
							 | 
						|
									"${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIGVERSION_FILENAME}"
							 | 
						|
									DESTINATION ${JSON_CONFIG_DESTINATION})
							 |