CC ?= gcc
AR ?= ar # 用来创建和维护静态库文件, 可直接将需要增加的.o 文件简单的追加到静态库的末尾;
RANLIB ?= ranlib # 更新静态库中的符号索引表;
CCFLAGS ?= -Wall -Wextra -Wshadow -Wconversion -std=c99 -pedantic -O2 -g
# wildcard: 用来 匹配文件
# OBJS=$(SRCS:%.c=%.o): 含义为将 SRCS中的所有.c文件替换为同名的.o文件, 并赋值给OBJS
SRCS=$(wildcard indicators/*.c)
SRCS+=$(wildcard utils/*.c)
OBJS=$(SRCS:%.c=%.o)
AMAL=$(SRCS:%.c=%.ca)
.SUFFIXES: .c .o .h .ca
all: libindicators.a sample example1 example2 fuzzer smoke smoke_amal benchmark cli
indicators.h: build.tcl templates/indicators.h templates/indicators.c templates/candles.h templates/candles.c
# 创建静态库的过程.
libindicators.a: indicators.h candles.h indicators.c candles.c $(OBJS)
$(CC) -c $(CCFLAGS) indicators.c -o indicators.o
$(CC) -c $(CCFLAGS) candles.c -o candles.o
$(AR) rcu $@ $^ indicators.o candles.o
$(RANLIB) $@
smoke: smoke.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
./$@
smoke_amal: smoke.o tiamalgamation.o
$(CC) $(CCFLAGS) -o $@ $^ -lm
./$@
example1: example1.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
example2: example2.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
fuzzer: fuzzer.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
sample: sample.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
cli: cli.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
#Benchmark and further testing.
benchmark: benchmark.o libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -lm
#Optional benchmark program. Requires TA-Lib.
benchmark_talib: benchmark.c libindicators.a
$(CC) $(CCFLAGS) -o $@ $^ -DTA_LIB -lta_lib -lm
#This will build all of Tulip Indicators into one .c file.
#This is recommended to be used with other bindings for ease of build.
tiamalgamation.c: $(AMAL) indicators.ca indicators.h candles.ca candles.h
$(OBJS): indicators.h candles.h
smoke.o: indicators.h candles.h
example1.o: indicators.h
example2.o: indicators.h
fuzzer.o: indicators.h candles.h
sample.o: indicators.h candles.h
cli.o: indicators.h candles.h
benchmark.o: indicators.h candles.h
$(AMAL): indicators.h candles.h
.c.o:
$(CC) -c $(CCFLAGS) $< -o $@
# -E: 同名的环境变量将覆盖目标指定的变量定义;
# -P: 输出Makefille被执行的过程信息;
# -D: 等价于在头文件中定义宏;
.c.ca:
$(CC) -E -P $(CCFLAGS) $< -o $@ -D TI_SKIP_SYSTEM_HEADERS -D __TI_INDICATORS_H__ -D __TC_CANDLES_H__ -D __BUFFER_H__ -D __LOCALBUFFER_H__ -D __MINMAX_H__
clean:
rm -f *.a
rm -f *.exe
rm -f *.o
rm -f indicators/*.o
rm -f utils/*.o
rm -f *.ca
rm -f indicators/*.ca
rm -f utils/*.ca
veryclean:
rm -f *.a
rm -f *.exe
rm -f *.o
rm -f indicators/*.o
rm -f utils/*.o
rm -f *.ca
rm -f indicators/*.ca
rm -f utils/*.ca
rm -f indicators.h
rm -f indicators.c
rm -f candles.h
rm -f candles.c
rm -f tiamalgamation.c
rm -f -r docs
量化交易之linux篇 - makefile - demo&注释
原创ErwinSmith 博主文章分类:Linux基础 ©著作权
©著作权归作者所有:来自51CTO博客作者ErwinSmith的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
量化交易开发之基本语法(三)
本教程则是以量化的情景从零讲解python编程,所以将更适合想学做量化策略的人。
数据 变量名 python -
量化交易开发之函数API(四)
我们讲解一下python中的函数知识
API 数据 python -
量化交易开发之初识量化(一)
本系列课程将开启手把手保姆级实战课程,开发属于你自己的量化策略!!!
量化交易 策略因子 实战教学 -
量化交易之nicegui篇 - 基本控件demo
【代码】量化交易之nicegui篇 - 基本控件demo。
python nicegui ide ico Text -
量化交易之One Piece篇 - spdlog - 示例demo
【代码】量化交易之One Piece篇 - spdlog - 示例demo。
c++ 算法 开发语言 #include -
量化交易之linux篇 - makefile - 动态库.so、静态库.a的制作
试./main// 动态库制作的步骤主函数测试数据:main.c功能函数实现:add.c.
makefile 动态库 静态库 解决方法 文件名 -
量化交易之C++篇 - rapidjson - demo示例
【代码】量化交易之C++篇 - rapidjson - demo示例。
c++ 开发语言 算法 #include json -
量化交易之机器学习篇 - k近邻算法demo
K近邻算法
机器学习 近邻算法 人工智能 -
量化交易之QT篇 - IController
【代码】量化交易之QT篇 - IController。
qt ui 开发语言 linux #include -
量化交易之QT篇 - TQZMainController
【代码】量化交易之QT篇 - TQZMainController。
c++ 开发语言 linux qt #include -
量化交易之QT篇 - TQZMessageController
【代码】量化交易之QT篇 - TQZMessageController。
qt linux c++ Text #include -
量化交易之QT篇 - TQZTradeController
【代码】量化交易之QT篇 - TQZTradeController。
qt linux c++ Qt #include -
量化交易之QT篇 - TQZBalanceView
【代码】量化交易之QT篇 - TQZBalanceView。
qt c++ Qt #include #ifndef -
量化交易之QT篇 - TQZBanView
【代码】量化交易之QT篇 - TQZBanView。
qt c++ 开发语言 #include #ifndef -
量化交易之linux篇 - makefile - 制作数学库(动态库&静态库)
【代码】量化交易之linux篇 - makefile - 数学库。
linux Powered by 金山文档 Test #include #define