.PHONY: all clean # C&GO编译器 CC := arm-linux-gnueabihf-gcc GO := go GO_BUILD := $(GO) build GO_FLAGS := -ldflags "-s -w -X main.BuildTime=$(shell date +%Y-%m-%dT%H:%M:%S)" # GO编译环境 SETGO_ENV = \ GOOS=linux \ GOARCH=arm \ GOARM=7 \ CC=$(CC) \ CGO_ENABLED=1 # 日期和时间 DATE := $(shell date +%Y%m%d_%H%M%S) # 依赖库路径 RTU_LINUX_MODULES_PATH := $(shell pwd)/../rtu_linux_modules # 依赖静态库 S_LIBS0 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/swapi -lswapi S_LIBS1 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/ec200u -lec200u -L$(RTU_LINUX_MODULES_PATH)/air720u -lair720u S_LIBS2 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/hk_takephoto -lhk_takephoto -L$(RTU_LINUX_MODULES_PATH)/dh_takephoto -ldh_takephoto S_LIBS3 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/air530z -lair530z # 依赖动态库 D_LIBS0 := -Wl,-Bdynamic -lc -lm -ldl -lpthread D_LIBS2 := -Wl,-Bdynamic -L$(RTU_LINUX_MODULES_PATH)/hk_takephoto/lib/armv7hf/. -lMvCameraControl D_LIBS2 += -L$(RTU_LINUX_MODULES_PATH)/dh_takephoto/lib/armv7hf -lMVSDK -liImageProcessing -lImageConvert -llog4cpp -lMvLSCProcess D_LIBS2 += -L$(RTU_LINUX_MODULES_PATH)/dh_takephoto/lib/armv7hf/GenICam/bin -lGCBase_gcc483_v3_0 -lGenApi_gcc483_v3_0 -lLog_gcc483_v3_0 -llog4cpp_gcc483_v3_0 -lMathParser_gcc483_v3_0 -lNodeMapData_gcc483_v3_0 -lXmlParser_gcc483_v3_0 # 编译的目标 all: networkd timesyncd # 可执行程序 LK_LIBS := $(S_LIBS0) $(S_LIBS1) $(D_LIBS0) networkd : libswapi.a libair720u.a libec200u.a mkdir -p ./build $(GO) mod tidy $(SETGO_ENV) CGO_LDFLAGS="$(LK_LIBS)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./networkd.service/*.go cp -rf $@ ./build/ && cp -rf $@ ./build/$(basename $@)_$(DATE)$(suffix $@) && rm -rf $@ LK_LIBS := $(S_LIBS0) $(S_LIBS1) $(D_LIBS0) timesyncd : libswapi.a libair720u.a libec200u.a mkdir -p ./build $(GO) mod tidy $(SETGO_ENV) CGO_LDFLAGS="$(LK_LIBS)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./timesyncd.service/*.go cp -rf $@ ./build/ && cp -rf $@ ./build/$(basename $@)_$(DATE)$(suffix $@) && rm -rf $@ # 静态库模块 libswapi.a : $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/swapi target=armv7hf $@ libec200u.a : $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/ec200u target=armv7hf $@ libair720u.a : $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/air720u target=armv7hf $@ libair530z.a : $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/air530z target=armv7hf $@ libhk_takephoto.a : $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/hk_takephoto target=armv7hf $@ libdh_takephoto.a : $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/dh_takephoto target=armv7hf $@ # 编译的清理 clean: @for m in swapi hk_takephoto dh_takephoto ec200u air720u air530z; do \ $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/$$m clean || true; \ done rm -rf build