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.
		
		
			
		
		
		
		
			
		
			
				
					
					
						
							65 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							65 lines
						
					
					
						
							2.4 KiB
						
					
					
				| # - Try to find precompiled headers support for GCC 3.4 and 4.x
 | |
| # Once done this will define:
 | |
| #
 | |
| # Variable:
 | |
| #   PCHSupport_FOUND
 | |
| #
 | |
| # Macro:
 | |
| #   ADD_PRECOMPILED_HEADER
 | |
| 
 | |
| IF(CMAKE_COMPILER_IS_GNUCXX)
 | |
|     EXEC_PROGRAM(
 | |
|     	${CMAKE_CXX_COMPILER} 
 | |
|         ARGS 			--version 
 | |
|         OUTPUT_VARIABLE _compiler_output)
 | |
|     STRING(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1" 
 | |
|            gcc_compiler_version ${_compiler_output})
 | |
|     #MESSAGE("GCC Version: ${gcc_compiler_version}")
 | |
|     IF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
 | |
|         SET(PCHSupport_FOUND TRUE)
 | |
|     ELSE(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
 | |
|         IF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]")
 | |
|             SET(PCHSupport_FOUND TRUE)
 | |
|         ENDIF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]")
 | |
|     ENDIF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
 | |
| ENDIF(CMAKE_COMPILER_IS_GNUCXX)
 | |
| 
 | |
| MACRO(ADD_PRECOMPILED_HEADER _targetName _input )
 | |
| 
 | |
|     GET_FILENAME_COMPONENT(_name ${_input} NAME)
 | |
|     SET(_source "${CMAKE_CURRENT_SOURCE_DIR}/${_input}")
 | |
|     SET(_outdir "${CMAKE_CURRENT_BINARY_DIR}/${_name}.gch")
 | |
|     MAKE_DIRECTORY(${_outdir})
 | |
|     SET(_output "${_outdir}/${CMAKE_BUILD_TYPE}.c++")
 | |
|     STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name)
 | |
|     SET(_compiler_FLAGS ${${_flags_var_name}})
 | |
|     
 | |
|     GET_DIRECTORY_PROPERTY(_directory_flags INCLUDE_DIRECTORIES)
 | |
|     FOREACH(item ${_directory_flags})
 | |
|     LIST(APPEND _compiler_FLAGS "-I${item}")
 | |
|     ENDFOREACH(item)
 | |
| 
 | |
| 	GET_DIRECTORY_PROPERTY(_directory_flags COMPILE_DEFINITIONS)
 | |
| 	FOREACH(item ${_directory_flags})
 | |
|     LIST(APPEND _compiler_FLAGS "-D${item}")
 | |
|     ENDFOREACH(item)
 | |
| 
 | |
|     SEPARATE_ARGUMENTS(_compiler_FLAGS)
 | |
|     #MESSAGE("_compiler_FLAGS: ${_compiler_FLAGS}")
 | |
|     message("${CMAKE_CXX_COMPILER} ${_compiler_FLAGS} -x c++-header -o ${_output} ${_source}")
 | |
|     ADD_CUSTOM_COMMAND(
 | |
|         OUTPUT ${_output}
 | |
|         COMMAND ${CMAKE_CXX_COMPILER}
 | |
| 				${_compiler_FLAGS}
 | |
| 				-x c++-header
 | |
| 				-o ${_output} ${_source}
 | |
|         DEPENDS ${_source} )
 | |
|    	ADD_CUSTOM_TARGET(${_targetName}_gch DEPENDS ${_output})
 | |
|     ADD_DEPENDENCIES(${_targetName} ${_targetName}_gch)
 | |
|     #SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-include ${_name} -Winvalid-pch -H")
 | |
|     #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include ${_name} -Winvalid-pch")
 | |
|     SET_TARGET_PROPERTIES(${_targetName} PROPERTIES
 | |
|     	COMPILE_FLAGS "-include ${_name} -Winvalid-pch"
 | |
|     )
 | |
| 	
 | |
| ENDMACRO(ADD_PRECOMPILED_HEADER)
 | |
| 
 |