mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Add examples subdirectory to CMake build; included if BUILD_EXAMPLES is true
This commit is contained in:
		 Martin Moene
					Martin Moene
				
			
				
					committed by
					
						 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
						parent
						
							4ecb2e112e
						
					
				
				
					commit
					85de0727d4
				
			
							
								
								
									
										100
									
								
								examples/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								examples/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| # | ||||
| # Build examples. | ||||
| # | ||||
| # Requires BUILD_EXAMPLES to be defined 'true', see ../CMakeLists.txt. | ||||
| # | ||||
|  | ||||
| cmake_minimum_required( VERSION 3.0 ) | ||||
|  | ||||
| project( CatchExamples CXX ) | ||||
|  | ||||
| # define folders used: | ||||
|  | ||||
| set( EXAMPLES_DIR ${CATCH_DIR}/examples ) | ||||
| set( HEADER_DIR   ${CATCH_DIR}/single_include ) | ||||
|  | ||||
| # single-file sources: | ||||
|  | ||||
| set( SOURCES_SINGLE_FILE | ||||
|     010-TestCase.cpp | ||||
| ) | ||||
|  | ||||
| # multiple-file modules: | ||||
|  | ||||
| set( SOURCES_020 | ||||
|     020-TestCase-1.cpp | ||||
|     020-TestCase-2.cpp | ||||
| ) | ||||
|  | ||||
| # main for idiomatic test sources: | ||||
|  | ||||
| set( SOURCES_IDIOMATIC_MAIN | ||||
|     000-CatchMain.cpp | ||||
| ) | ||||
|  | ||||
| # sources to combine with 000-CatchMain.cpp: | ||||
|  | ||||
| set( SOURCES_IDIOMATIC_TESTS | ||||
|     030-Asn-Require-Check.cpp | ||||
|     100-Fix-Section.cpp | ||||
|     110-Fix-ClassFixture.cpp | ||||
|     120-Bdd-ScenarioGivenWhenThen.cpp | ||||
|     210-Evt-EventListeners.cpp | ||||
| ) | ||||
|  | ||||
| # check if all sources are listed, warn if not: | ||||
|  | ||||
| set( SOURCES_ALL | ||||
|     ${SOURCES_020} | ||||
|     ${SOURCES_SINGLE_FILE} | ||||
|     ${SOURCES_IDIOMATIC_MAIN} | ||||
|     ${SOURCES_IDIOMATIC_TESTS} | ||||
| ) | ||||
|  | ||||
| foreach( name ${SOURCES_ALL} ) | ||||
|     list( APPEND SOURCES_ALL_PATH ${EXAMPLES_DIR}/${name} ) | ||||
| endforeach() | ||||
|  | ||||
| CheckFileList( SOURCES_ALL_PATH ${EXAMPLES_DIR} ) | ||||
|  | ||||
| # create target names: | ||||
|  | ||||
| string( REPLACE ".cpp" "" BASENAMES_SINGLE_FILE     "${SOURCES_SINGLE_FILE}" ) | ||||
| string( REPLACE ".cpp" "" BASENAMES_IDIOMATIC_TESTS "${SOURCES_IDIOMATIC_TESTS}" ) | ||||
|  | ||||
| set( TARGETS_SINGLE_FILE     ${BASENAMES_SINGLE_FILE} ) | ||||
| set( TARGETS_IDIOMATIC_TESTS ${BASENAMES_IDIOMATIC_TESTS} ) | ||||
| set( TARGETS_ALL             ${TARGETS_SINGLE_FILE} ${TARGETS_IDIOMATIC_TESTS} 020-TestCase CatchMain ) | ||||
|  | ||||
| # define program targets: | ||||
|  | ||||
| add_library( CatchMain OBJECT ${EXAMPLES_DIR}/${SOURCES_IDIOMATIC_MAIN} ${HEADER_DIR}/catch.hpp ) | ||||
|  | ||||
| add_executable( 020-TestCase ${EXAMPLES_DIR}/020-TestCase-1.cpp ${EXAMPLES_DIR}/020-TestCase-2.cpp ${HEADER_DIR}/catch.hpp ) | ||||
|  | ||||
| foreach( name ${TARGETS_SINGLE_FILE} ) | ||||
|     add_executable( ${name} ${EXAMPLES_DIR}/${name}.cpp ${HEADER_DIR}/catch.hpp ) | ||||
| endforeach() | ||||
|  | ||||
| foreach( name ${TARGETS_IDIOMATIC_TESTS} ) | ||||
|     add_executable( ${name} ${EXAMPLES_DIR}/${name}.cpp $<TARGET_OBJECTS:CatchMain> ${HEADER_DIR}/catch.hpp ) | ||||
| endforeach() | ||||
|  | ||||
| foreach( name ${TARGETS_ALL} ) | ||||
|     target_include_directories( ${name} PRIVATE ${HEADER_DIR} ) | ||||
|  | ||||
|     set_property(TARGET ${name} PROPERTY CXX_STANDARD 11) | ||||
|  | ||||
|     # Add desired warnings | ||||
|     if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" ) | ||||
|         target_compile_options( ${name}  PRIVATE -Wall -Wextra -Wunreachable-code ) | ||||
|     endif() | ||||
|     # Clang specific warning go here | ||||
|     if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) | ||||
|         # Actually keep these | ||||
|         target_compile_options( ${name}  PRIVATE -Wweak-vtables -Wexit-time-destructors -Wglobal-constructors -Wmissing-noreturn ) | ||||
|     endif() | ||||
|     if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" ) | ||||
|         target_compile_options( ${name}  PRIVATE /W4 /w44265 /WX ) | ||||
|     endif() | ||||
| endforeach() | ||||
		Reference in New Issue
	
	Block a user