reorg + selfmanage externals
This commit is contained in:
		| @@ -1,16 +1,66 @@ | |||||||
| cmake_minimum_required(VERSION 3.9 FATAL_ERROR) | cmake_minimum_required(VERSION 3.24 FATAL_ERROR) | ||||||
|  |  | ||||||
| project(solanaceae) | # cmake setup begin | ||||||
|  | project(solanaceae_contact) | ||||||
|  |  | ||||||
| add_library(solanaceae_contact INTERFACE | if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) | ||||||
| 	#./solanaceae/contact/components.hpp | 	set(SOLANACEAE_CONTACT_STANDALONE ON) | ||||||
| 	#./solanaceae/contact/components_id.inl | else() | ||||||
| 	#./solanaceae/contact/contact_model3.hpp | 	set(SOLANACEAE_CONTACT_STANDALONE OFF) | ||||||
|  | endif() | ||||||
|  | message("II SOLANACEAE_CONTACT_STANDALONE " ${SOLANACEAE_CONTACT_STANDALONE}) | ||||||
|  |  | ||||||
|  | if (SOLANACEAE_CONTACT_STANDALONE) | ||||||
|  | 	set(CMAKE_POSITION_INDEPENDENT_CODE ON) | ||||||
|  |  | ||||||
|  | 	# defaulting to debug mode, if not specified | ||||||
|  | 	if(NOT CMAKE_BUILD_TYPE) | ||||||
|  | 		set(CMAKE_BUILD_TYPE "Debug") | ||||||
|  | 	endif() | ||||||
|  |  | ||||||
|  | 	# setup my vim ycm :D | ||||||
|  | 	set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | ||||||
|  |  | ||||||
|  | 	# more paths | ||||||
|  | 	set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") | ||||||
|  | 	set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") | ||||||
|  | 	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") | ||||||
|  | endif() | ||||||
|  |  | ||||||
|  | # external libs | ||||||
|  | add_subdirectory(./external EXCLUDE_FROM_ALL) # before increasing warn levels, sad :( | ||||||
|  |  | ||||||
|  | if (SOLANACEAE_CONTACT_STANDALONE) | ||||||
|  | 	set(CMAKE_CXX_EXTENSIONS OFF) | ||||||
|  |  | ||||||
|  | 	# bump up warning levels appropriately for clang, gcc & msvc | ||||||
|  | 	if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") | ||||||
|  | 		add_compile_options( | ||||||
|  | 			-Wall -Wextra # Reasonable and standard | ||||||
|  | 			-Wpedantic # Warn if non-standard C++ is used | ||||||
|  | 			-Wunused # Warn on anything being unused | ||||||
|  | 			#-Wconversion # Warn on type conversions that may lose data | ||||||
|  | 			#-Wsign-conversion # Warn on sign conversions | ||||||
|  | 			-Wshadow # Warn if a variable declaration shadows one from a parent context | ||||||
| 		) | 		) | ||||||
|  |  | ||||||
| target_include_directories(solanaceae_contact INTERFACE .) | 		if (NOT WIN32) | ||||||
| target_compile_features(solanaceae_contact INTERFACE cxx_std_17) | 			#link_libraries(-fsanitize=address) | ||||||
| target_link_libraries(solanaceae_contact INTERFACE | 			#link_libraries(-fsanitize=address,undefined) | ||||||
| 	EnTT::EnTT | 			#link_libraries(-fsanitize-address-use-after-scope) | ||||||
| ) | 			#link_libraries(-fsanitize=undefined) | ||||||
|  | 		endif() | ||||||
|  | 	elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") | ||||||
|  | 		if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") | ||||||
|  | 			string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") | ||||||
|  | 		else() | ||||||
|  | 			set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") | ||||||
|  | 		endif() | ||||||
|  | 	endif() | ||||||
|  |  | ||||||
|  | endif() | ||||||
|  |  | ||||||
|  | # cmake setup end | ||||||
|  |  | ||||||
|  | add_subdirectory(./src) | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								external/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								external/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | cmake_minimum_required(VERSION 3.24 FATAL_ERROR) | ||||||
|  |  | ||||||
|  | include(FetchContent) | ||||||
|  |  | ||||||
|  | if (NOT TARGET EnTT::EnTT) | ||||||
|  | 	FetchContent_Declare(EnTT | ||||||
|  | 		GIT_REPOSITORY https://github.com/skypjack/entt.git | ||||||
|  | 		GIT_TAG v3.12.2 | ||||||
|  | 		EXCLUDE_FROM_ALL | ||||||
|  | 	) | ||||||
|  | 	FetchContent_MakeAvailable(EnTT) | ||||||
|  | endif() | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								src/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | add_library(solanaceae_contact INTERFACE | ||||||
|  | 	#./solanaceae/contact/components.hpp | ||||||
|  | 	#./solanaceae/contact/components_id.inl | ||||||
|  | 	#./solanaceae/contact/contact_model3.hpp | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | target_include_directories(solanaceae_contact INTERFACE .) | ||||||
|  | target_compile_features(solanaceae_contact INTERFACE cxx_std_17) | ||||||
|  | target_link_libraries(solanaceae_contact INTERFACE | ||||||
|  | 	EnTT::EnTT | ||||||
|  | ) | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user