104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
|  | cc        := g++ | ||
|  | nvcc      = /usr/local/cuda-10.2/bin/nvcc | ||
|  | CXXFLAGS  += -std=c++14 | ||
|  | LDFLAGS = -lm  | ||
|  | 
 | ||
|  | cpp_srcs  := $(shell find src -name "*.cpp") | ||
|  | cpp_objs  := $(cpp_srcs:.cpp=.cpp.o) | ||
|  | cpp_objs  := $(cpp_objs:src/%=objs/%) | ||
|  | cpp_mk	  := $(cpp_objs:.cpp.o=.cpp.mk) | ||
|  | 
 | ||
|  | cu_srcs	  := $(shell find src -name "*.cu") | ||
|  | cu_objs   := $(cu_srcs:.cu=.cu.o) | ||
|  | cu_objs	  := $(cu_objs:src/%=objs/%) | ||
|  | cu_mk	  := $(cu_objs:.cu.o=.cu.mk) | ||
|  | 
 | ||
|  | include_paths := include       \
 | ||
|  | 			third-party   \
 | ||
|  | 		   	/usr/include/opencv4 \
 | ||
|  | 			/usr/include/aarch64-linux-gnu \
 | ||
|  | 			/usr/local/cuda-10.2/include \
 | ||
|  | 			/usr/include/pcl-1.8 \
 | ||
|  | 			/usr/include/eigen3 \
 | ||
|  | 			/usr/include/vtk-6.3 \
 | ||
|  | 			#/home/user/Downloads/TensorRT-8.0.1.6/include \ | ||
|  | 			 | ||
|  | library_paths := /usr/lib/aarch64-linux-gnu \
 | ||
|  | 			/usr/local/cuda-10.2/lib64 \
 | ||
|  | 			/usr/local/lib \
 | ||
|  | 			/home/jetson/tmp/obstacle-detection/lib \
 | ||
|  | 			#/home/jetson/Downloads/TensorRT-8.0.1.6/lib \ | ||
|  | 			 | ||
|  | link_librarys := opencv_core opencv_highgui opencv_imgproc opencv_videoio opencv_imgcodecs \
 | ||
|  | 			nvinfer nvinfer_plugin nvonnxparser \
 | ||
|  | 			cuda cublas cudart cudnn realsense2 glfw GL GLU\
 | ||
|  | 			pcl_common pcl_segmentation pcl_io pcl_kdtree pcl_filters\
 | ||
|  | 			pcl_features pcl_apps pcl_io_ply pcl_keypoints pcl_ml pcl_octree pcl_outofcore pcl_people  pcl_recognition pcl_registration pcl_sample_consensus pcl_search pcl_stereo pcl_surface pcl_tracking pcl_visualization \
 | ||
|  | 			boost_system vtkCommonCore-6.3 vtkCommonMath-6.3 vtkRenderingCore-6.3 vtkCommonDataModel-6.3\
 | ||
|  | 			stdc++ dl\
 | ||
|  | 			JetsonGPIO | ||
|  | 
 | ||
|  | empty		  := | ||
|  | export_path   := $(subst $(empty) $(empty),:,$(library_paths)) | ||
|  | 
 | ||
|  | run_paths     := $(foreach item,$(library_paths),-Wl,-rpath=$(item)) | ||
|  | include_paths := $(foreach item,$(include_paths),-I$(item)) | ||
|  | library_paths := $(foreach item,$(library_paths),-L$(item)) | ||
|  | link_librarys := $(foreach item,$(link_librarys),-l$(item)) | ||
|  | 
 | ||
|  | cpp_compile_flags := -std=c++14 -fPIC -w -g -pthread -fopenmp -O0 | ||
|  | cu_compile_flags  := -std=c++14 -g -w -O0 -Xcompiler "$(cpp_compile_flags)" | ||
|  | link_flags        := -pthread -fopenmp -Wl,-rpath='$$ORIGIN' | ||
|  | 
 | ||
|  | cpp_compile_flags += $(include_paths) | ||
|  | cu_compile_flags  += $(include_paths) | ||
|  | link_flags        += $(library_paths) $(link_librarys) $(run_paths) | ||
|  | 
 | ||
|  | ifneq ($(MAKECMDGOALS), clean) | ||
|  | -include $(cpp_mk) $(cu_mk) | ||
|  | endif | ||
|  | 
 | ||
|  | pro	   := workspace/pro | ||
|  | expath := library_path.txt | ||
|  | 
 | ||
|  | library_path.txt :  | ||
|  | 	@echo LD_LIBRARY_PATH=$(export_path):"$$"LD_LIBRARY_PATH > $@ | ||
|  | 
 | ||
|  | workspace/pro : $(cpp_objs) $(cu_objs) | ||
|  | 		@echo Link $@ | ||
|  | 		@mkdir -p $(dir $@) | ||
|  | 		@$(cc) $^ -o $@ $(link_flags) | ||
|  | 
 | ||
|  | objs/%.cpp.o : src/%.cpp | ||
|  | 	@echo Compile CXX $< | ||
|  | 	@mkdir -p $(dir $@) | ||
|  | 	@$(cc) -c $< -o $@ $(cpp_compile_flags) | ||
|  | 
 | ||
|  | objs/%.cu.o : src/%.cu | ||
|  | 	@echo Compile CUDA $< | ||
|  | 	@mkdir -p $(dir $@) | ||
|  | 	@$(nvcc) -c $< -o $@ $(cu_compile_flags) | ||
|  | 
 | ||
|  | objs/%.cpp.mk : src/%.cpp | ||
|  | 	@echo Compile depends CXX $< | ||
|  | 	@mkdir -p $(dir $@) | ||
|  | 	@$(cc) -M $< -MF $@ -MT $(@:.cpp.mk=.cpp.o) $(cpp_compile_flags) | ||
|  | 	 | ||
|  | objs/%.cu.mk : src/%.cu | ||
|  | 	@echo Compile depends CUDA $< | ||
|  | 	@mkdir -p $(dir $@) | ||
|  | 	@$(nvcc) -M $< -MF $@ -MT $(@:.cu.mk=.cu.o) $(cu_compile_flags) | ||
|  | 
 | ||
|  | run   : workspace/pro | ||
|  | 		  @cd workspace && ./pro | ||
|  | 
 | ||
|  | clean : | ||
|  | 	@rm -rf objs workspace/pro | ||
|  | 	@rm -rf library_path.txt | ||
|  | 	@rm -rf workspace/Result.jpg | ||
|  | 
 | ||
|  | # 导出符号,使得运行时能够链接上
 | ||
|  | export LD_LIBRARY_PATH:=$(export_path):$(LD_LIBRARY_PATH) | ||
|  | 
 | ||
|  | 
 |