Makefile 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. .PHONY: all clean
  2. # C&GO编译器
  3. CC := gcc
  4. AR := ar
  5. DEFINS = -D_GNU_SOURCE
  6. GO := go
  7. GO_BUILD := $(GO) build
  8. GO_FLAGS := -ldflags "-s -w -X hnyfkj.com.cn/rtu/linux/baseapp.Version=1.0.0.1 -X hnyfkj.com.cn/rtu/linux/baseapp.BuildTime=$(shell date +%Y-%m-%dT%H:%M:%S)"
  9. target ?= x86_64
  10. ifeq ($(target),armv7hf)
  11. GOOS := linux
  12. GOARCH := arm
  13. GOARM := 7
  14. CC := arm-linux-gnueabihf-gcc
  15. AR := arm-linux-gnueabihf-ar
  16. endif
  17. # GO编译环境
  18. SETGO_ENV = \
  19. $(if $(GOOS),GOOS=$(GOOS)) \
  20. $(if $(GOARCH),GOARCH=$(GOARCH)) \
  21. $(if $(GOARM),GOARM=$(GOARM)) \
  22. CC=$(CC) CGO_ENABLED=1 \
  23. # 日期和时间
  24. DATE := $(shell date +%Y%m%d_%H%M%S)
  25. # 依赖库路径
  26. RTU_LINUX_MODULES_PATH := $(shell pwd)/../rtu_linux_modules
  27. # 编译的目标
  28. all : rtu_xy_v.out
  29. # 通用基础库
  30. libswapi.a :
  31. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/swapi target=$(target) $@
  32. # 海康机器人
  33. libmvs_u_takephoto.a :
  34. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/mvs_u_takephoto target=$(target) $@
  35. # "Air720U"
  36. libair720u.a :
  37. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/air720u target=$(target) $@
  38. # "Air530Z"
  39. libair530z.a :
  40. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/air530z target=$(target) $@
  41. # "EC200U"
  42. libec200u.a :
  43. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/ec200u target=$(target) $@
  44. # 单片机MCU
  45. libmcu_ctrl_board.a :
  46. $(MAKE) -C mcu_ctrl_board target=$(target) $@
  47. LIBS := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/swapi -lswapi -L$(RTU_LINUX_MODULES_PATH)/mvs_u_takephoto -lmvs_u_takephoto
  48. LIBS += -L$(RTU_LINUX_MODULES_PATH)/air720u -lair720u -L$(RTU_LINUX_MODULES_PATH)/air530z -lair530z -L$(RTU_LINUX_MODULES_PATH)/ec200u -lec200u
  49. LIBS += -L./mcu_ctrl_board -lmcu_ctrl_board
  50. ifeq ($(target),armv7hf)
  51. LIBS += -Wl,-Bdynamic -lc -lm -ldl -lpthread -L$(RTU_LINUX_MODULES_PATH)/mvs_u_takephoto/lib/armv7hf/. -lMvCameraControl
  52. else
  53. LIBS += -Wl,-Bdynamic -lc -lm -ldl -lpthread -L$(RTU_LINUX_MODULES_PATH)/mvs_u_takephoto/lib/x86_64/64 -lMvCameraControl
  54. endif
  55. # 可执行程序
  56. rtu_xy_v.out : libswapi.a libmvs_u_takephoto.a libair720u.a libair530z.a libec200u.a libmcu_ctrl_board.a ./main.go
  57. mkdir -p ./build
  58. $(GO) mod tidy
  59. $(SETGO_ENV) CGO_LDFLAGS="$(LIBS)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./main.go
  60. @cp $@ ./build/$(basename $@)_$(DATE)$(suffix $@)
  61. # 编译的清理
  62. clean :
  63. make -C $(RTU_LINUX_MODULES_PATH)/swapi clean
  64. make -C $(RTU_LINUX_MODULES_PATH)/mvs_u_takephoto clean
  65. make -C $(RTU_LINUX_MODULES_PATH)/air720u clean
  66. make -C $(RTU_LINUX_MODULES_PATH)/air530z clean
  67. make -C $(RTU_LINUX_MODULES_PATH)/ec200u clean
  68. make -C ./mcu_ctrl_board clean
  69. rm -rf ./*.a ./*.out ./build