75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| cmake_minimum_required(VERSION 3.10)
 | |
| 
 | |
| project("PROJECTNAME"
 | |
|         VERSION 0.1
 | |
|         DESCRIPTION "Description of PROJECTNAME"
 | |
|         HOMEPAGE_URL "https://labs.phundrak.fr/phundrak/PROJECTNAME"
 | |
|         LANGUAGES C)
 | |
| 
 | |
| set(CMAKE_C_COMPILER /usr/bin/clang)
 | |
| file(GLOB SRC_FILES "src/*.c")
 | |
| 
 | |
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
 | |
| include(functions)
 | |
| 
 | |
| enable_c_compiler_flag_if_supported("-Wall")
 | |
| enable_c_compiler_flag_if_supported("-pedantic")
 | |
| enable_c_compiler_flag_if_supported("-Wextra")
 | |
| enable_c_compiler_flag_if_supported("-Wfloat-equal")
 | |
| enable_c_compiler_flag_if_supported("-Wwrite-strings")
 | |
| enable_c_compiler_flag_if_supported("-Wpointer-arith")
 | |
| enable_c_compiler_flag_if_supported("-Wcast-qual")
 | |
| enable_c_compiler_flag_if_supported("-Wcast-align")
 | |
| enable_c_compiler_flag_if_supported("-Wconversion")
 | |
| enable_c_compiler_flag_if_supported("-Wshadow")
 | |
| enable_c_compiler_flag_if_supported("-Wreduntant-decls")
 | |
| enable_c_compiler_flag_if_supported("-Wdouble-promotion")
 | |
| enable_c_compiler_flag_if_supported("-Winit-self")
 | |
| enable_c_compiler_flag_if_supported("-Wswitch-default")
 | |
| enable_c_compiler_flag_if_supported("-Wswitch-enum")
 | |
| enable_c_compiler_flag_if_supported("-Wundef")
 | |
| enable_c_compiler_flag_if_supported("-Winline")
 | |
| enable_c_compiler_flag_if_supported("-Wpedantic")
 | |
| enable_c_compiler_flag_if_supported("-Wsign-conversion")
 | |
| enable_c_compiler_flag_if_supported("-Wnull-dereference")
 | |
| enable_c_compiler_flag_if_supported("-Wuseless-cast")
 | |
| enable_c_compiler_flag_if_supported("-Wformat=2")
 | |
| enable_c_compiler_flag_if_supported("-Wlifetime")
 | |
| if(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | |
|   enable_c_compiler_flag_if_supported("-g")
 | |
| else()
 | |
|   enable_c_compiler_flag_if_supported("-O3")
 | |
|   enable_c_compiler_flag_if_supported("-flto")
 | |
| endif()
 | |
| 
 | |
| # include_directories(<PUBLIC HEADER DIRECTORIES>)
 | |
| 
 | |
| # Main software
 | |
| set(TGT PROJECTNAME)
 | |
| set(EXECUTABLE_OUTPUT_PATH  ${PROJECT_SOURCE_DIR}/build/bin)
 | |
| add_executable(${TGT} ${SRC_FILES})
 | |
| target_compile_features(${TGT} PRIVATE c_std_11)
 | |
| target_include_directories(${TGT} PRIVATE include/PROJECTNAME)
 | |
| #target_link_libraries(${TGT})
 | |
| 
 | |
| # Tests, -DTESTS=True to activate
 | |
| if(TESTS)
 | |
|   set(TESTTGT PROJECTNAME-tests)
 | |
|   file(GLOB TEST_FILES "tests/tests.c")
 | |
|   add_executable(${TESTTGT} ${TEST_FILES})
 | |
|   set_property(TARGET ${TESTTGT} PROPERTY C_STANDARD 11)
 | |
|   target_include_directories(${TESTTGT} PRIVATE include/PROJECTNAME)
 | |
| endif()
 | |
| 
 | |
| # OS specific instructions.
 | |
| if(APPLE)
 | |
| elseif(WIN32)
 | |
|     # Windows developer environment specific instructions.
 | |
|     if(MINGW)
 | |
|     elseif(MSYS)
 | |
|     elseif(CYGWIN)
 | |
|     endif()
 | |
| elseif(UNIX)
 | |
| else()
 | |
| endif()
 |