mirror of
				https://github.com/TheLartians/ModernCppStarter.git
				synced 2025-10-31 02:01:33 +01:00 
			
		
		
		
	add tools.cmake
This commit is contained in:
		
							parent
							
								
									b42b541b25
								
							
						
					
					
						commit
						18f705beed
					
				
					 3 changed files with 42 additions and 15 deletions
				
			
		|  | @ -14,12 +14,9 @@ if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) | ||||||
|     message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there.") |     message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there.") | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| # ---- Add source files ---- | # --- Import tools ---- | ||||||
| 
 | 
 | ||||||
| # Note: globbing sources is considered bad practice as CMake's generators may not detect new files automatically. | include(cmake/tools.cmake) | ||||||
| # Keep that in mind when changing files, or explicitly mention them here. |  | ||||||
| FILE(GLOB_RECURSE headers CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") |  | ||||||
| FILE(GLOB_RECURSE sources CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp") |  | ||||||
| 
 | 
 | ||||||
| # ---- Add dependencies via CPM ---- | # ---- Add dependencies via CPM ---- | ||||||
| # see https://github.com/TheLartians/CPM.cmake for more info | # see https://github.com/TheLartians/CPM.cmake for more info | ||||||
|  | @ -33,6 +30,13 @@ CPMAddPackage( | ||||||
|   VERSION 1.0 |   VERSION 1.0 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | # ---- Add source files ---- | ||||||
|  | 
 | ||||||
|  | # Note: globbing sources is considered bad practice as CMake's generators may not detect new files automatically. | ||||||
|  | # Keep that in mind when changing files, or explicitly mention them here. | ||||||
|  | FILE(GLOB_RECURSE headers CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") | ||||||
|  | FILE(GLOB_RECURSE sources CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp") | ||||||
|  | 
 | ||||||
| # ---- Create library ---- | # ---- Create library ---- | ||||||
| 
 | 
 | ||||||
| # Note: for header-only libraries change all PUBLIC flags to INTERFACE and create an interface target: | # Note: for header-only libraries change all PUBLIC flags to INTERFACE and create an interface target: | ||||||
|  |  | ||||||
							
								
								
									
										33
									
								
								cmake/tools.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								cmake/tools.cmake
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | ||||||
|  | # this file contains a list of tools that can be activated and downloaded on-demand | ||||||
|  | # each tool is enabled during configuration by passing an additional `-DUSE_<TOOL>=<VALUE>` argument to CMake | ||||||
|  | 
 | ||||||
|  | # determine if a tool has already been enabled | ||||||
|  | foreach(TOOL USE_SANITIZER;USE_CCACHE) | ||||||
|  |   get_property(${TOOL}_ENABLED GLOBAL "" PROPERTY ${TOOL}_ENABLED SET)    | ||||||
|  | endforeach() | ||||||
|  | 
 | ||||||
|  | # enables sanitizers support using the the `USE_SANITIZER` flag | ||||||
|  | # available values are: Address, Memory, MemoryWithOrigins, Undefined, Thread, Leak, 'Address;Undefined' | ||||||
|  | if (USE_SANITIZER AND NOT USE_SANITIZER_ENABLED) | ||||||
|  |   set_property(GLOBAL PROPERTY USE_SANITIZER_ENABLED true)  | ||||||
|  | 
 | ||||||
|  |   CPMAddPackage( | ||||||
|  |     NAME StableCoder-cmake-scripts | ||||||
|  |     GITHUB_REPOSITORY StableCoder/cmake-scripts | ||||||
|  |     GIT_TAG 3a469d8251660a97dbf9e0afff0a242965d40277 | ||||||
|  |   ) | ||||||
|  |    | ||||||
|  |   include(${StableCoder-cmake-scripts_SOURCE_DIR}/sanitizers.cmake) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | # enables CCACHE support through the USE_CCACHE flag | ||||||
|  | # possible values are: YES, NO or equivalent | ||||||
|  | if (USE_CCACHE AND NOT USE_CCACHE_ENABLED) | ||||||
|  |   set_property(GLOBAL PROPERTY USE_CCACHE_ENABLED true)  | ||||||
|  | 
 | ||||||
|  |   CPMAddPackage( | ||||||
|  |     NAME Ccache.cmake | ||||||
|  |     GITHUB_REPOSITORY TheLartians/Ccache.cmake | ||||||
|  |     VERSION 1.1 | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
|  | @ -34,16 +34,6 @@ CPMAddPackage( | ||||||
|   VERSION 1.0 |   VERSION 1.0 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| CPMAddPackage( |  | ||||||
|   NAME StableCoder-cmake-scripts |  | ||||||
|   GITHUB_REPOSITORY StableCoder/cmake-scripts |  | ||||||
|   GIT_TAG 3a469d8251660a97dbf9e0afff0a242965d40277 |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| # adds support the the `USE_SANITIZER` flag |  | ||||||
| # available options are: Address, Memory, MemoryWithOrigins, Undefined, Thread, Leak, 'Address;Undefined' |  | ||||||
| include(${StableCoder-cmake-scripts_SOURCE_DIR}/sanitizers.cmake) |  | ||||||
| 
 |  | ||||||
| # ---- Create binary ---- | # ---- Create binary ---- | ||||||
| 
 | 
 | ||||||
| file(GLOB sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp) | file(GLOB sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue