Makefile 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. all : mvs_u_takephoto.out air720u_4g.out rtu_linux_modules.out
  27. # 通用基础库
  28. libswapi.a :
  29. $(MAKE) -C swapi target=$(target) $@
  30. # 海康机器人
  31. libmvs_u_takephoto.a :
  32. $(MAKE) -C mvs_u_takephoto target=$(target) $@
  33. # "Air720U"
  34. libair720u.a :
  35. $(MAKE) -C air720u target=$(target) $@
  36. # "Air530Z"
  37. libair530z.a :
  38. $(MAKE) -C air530z target=$(target) $@
  39. # 海康相机拍照测试
  40. LIB1 := -Wl,-Bstatic -L./swapi -lswapi -L./mvs_u_takephoto -lmvs_u_takephoto
  41. ifeq ($(target),armv7hf)
  42. LIB1 += -Wl,-Bdynamic -lc -lm -ldl -lpthread -L$(PWD)/mvs_u_takephoto/lib/armv7hf/. -lMvCameraControl
  43. else
  44. LIB1 += -Wl,-Bdynamic -lc -lm -ldl -lpthread -L$(PWD)/mvs_u_takephoto/lib/x86_64/64 -lMvCameraControl
  45. endif
  46. mvs_u_takephoto.out : libswapi.a libmvs_u_takephoto.a ./tests/mvs_u_takephoto/main.go
  47. mkdir -p ./build/takephoto_test
  48. $(GO) mod tidy
  49. $(SETGO_ENV) CGO_LDFLAGS="$(LIB1)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./tests/mvs_u_takephoto/main.go
  50. @cp $@ ./build/takephoto_test/$(basename $@)_$(DATE)$(suffix $@)
  51. rm -rf $@
  52. # 测4G模块Air720U
  53. LIB2 := -Wl,-Bstatic -L./swapi -lswapi -L./air720u -lair720u -Wl,-Bdynamic -lc -lm -ldl -lpthread
  54. air720u_4g.out : libswapi.a libair720u.a ./tests/air720u/main.go
  55. mkdir -p ./build/air720u_test
  56. $(GO) mod tidy
  57. $(SETGO_ENV) CGO_LDFLAGS="$(LIB2)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./tests/air720u/main.go
  58. @cp $@ ./build/air720u_test/$(basename $@)_$(DATE)$(suffix $@)
  59. rm -rf $@
  60. # 主测试程序
  61. LIB3 := -Wl,-Bstatic -L./swapi -lswapi -L./mvs_u_takephoto -lmvs_u_takephoto -L./air720u -lair720u -L./air530z -lair530z
  62. ifeq ($(target),armv7hf)
  63. LIB3 += -Wl,-Bdynamic -lc -lm -ldl -lpthread -L$(PWD)/mvs_u_takephoto/lib/armv7hf/. -lMvCameraControl
  64. else
  65. LIB3 += -Wl,-Bdynamic -lc -lm -ldl -lpthread -L$(PWD)/mvs_u_takephoto/lib/x86_64/64 -lMvCameraControl
  66. endif
  67. rtu_linux_modules.out : libswapi.a libmvs_u_takephoto.a libair720u.a libair530z.a ./main.go
  68. mkdir -p ./build
  69. $(GO) mod tidy
  70. $(SETGO_ENV) CGO_LDFLAGS="$(LIB3)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./main.go
  71. @cp $@ ./build/$(basename $@)_$(DATE)$(suffix $@)
  72. # 编译的清理
  73. clean :
  74. make -C ./swapi clean
  75. make -C ./mvs_u_takephoto clean
  76. make -C ./air720u clean
  77. make -C ./air530z clean
  78. rm -rf ./*.a ./*.out ./build