55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Makefile
		
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Makefile
		
	
	
| # =====CONFIG=====
 | |
| BUILD_DIR := ./build
 | |
| SRC_DIR := ./src
 | |
| INCLUDE_DIR := ./include
 | |
| TEST_DIR := test
 | |
| CORES != nproc
 | |
| 
 | |
| 
 | |
| # =====RECIPES=====
 | |
| all: build
 | |
| 
 | |
| .PHONY: cmake
 | |
| cmake: $(BUILD_DIR)/Debug/Makefile
 | |
| $(BUILD_DIR)/Debug/Makefile: CMakeLists.txt
 | |
| 	@ cmake -B'$(BUILD_DIR)/Debug' -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .
 | |
| 	@ ln -sf '$(BUILD_DIR)/Debug/compile_commands.json' compile_commands.json
 | |
| 
 | |
| .PHONY: cmake-test
 | |
| cmake-test: $(BUILD_DIR)/Test/Makefile
 | |
| $(BUILD_DIR)/Test/Makefile: CMakeLists.txt
 | |
| 	@ cmake -B'$(BUILD_DIR)/Test' -DCMAKE_BUILD_TYPE=Test .
 | |
| 
 | |
| .PHONY: build
 | |
| build: cmake
 | |
| 	@ make -C '$(BUILD_DIR)/Debug'
 | |
| 
 | |
| .PHONY: build-test
 | |
| build-test: cmake-test
 | |
| 	@ make -C '$(BUILD_DIR)/Test'
 | |
| 
 | |
| .PHONY: cmake-release
 | |
| cmake-release: $(BUILD_DIR)/Release/Makefile
 | |
| $(BUILD_DIR)/Release/Makefile: CMakeLists.txt
 | |
| 	@ cmake -B'$(BUILD_DIR)/Release' -DCMAKE_BUILD_TYPE=Release .
 | |
| 
 | |
| .PHONY: prod
 | |
| prod: cmake-release
 | |
| 	@ make -C '$(BUILD_DIR)/Release'
 | |
| 
 | |
| .PHONY: test
 | |
| test: build-test
 | |
| 	@ $(MAKE) -C '$(BUILD_DIR)/Test' test ARGS=-j$(CORES) CTEST_OUTPUT_ON_FAILURE=1
 | |
| 
 | |
| .PHONY: clean
 | |
| clean:
 | |
| 	@ rm -rf '$(BUILD_DIR)' compile_commands.json
 | |
| 
 | |
| # .PHONY: lint
 | |
| # lint:
 | |
| # 	@ clang-format --Werror -n $(SRCS)
 | |
| 
 | |
| # .PHONY: format
 | |
| # format:
 | |
| # 	@ clang-format -i $(SRCS)
 |