首页 > 其他分享 >makefile 实例: 编译libxyz.so 和 abc可执行文件。

makefile 实例: 编译libxyz.so 和 abc可执行文件。

时间:2024-02-27 15:36:33浏览次数:21  
标签:BIN SRC abc TARGET LIB libxyz XYZ makefile OBJDIR


.PHONY : clean all alldep
all: alldep

OBJDIR = Object

### libxyx.so ###
TARGET_LIB_XYZ = libxyz.so
TARGET_LIB_XYZ_OUTPUT = $(OBJDIR)/$(TARGET_LIB_XYZ)

LDFLAGS += -ltelux_wlan -lnl-3 -lnl-genl-3
LDFLAGS += -L$(SDKTARGETSYSROOT)/lib -L. -rdynamic
CFLAGS += -I$(SDKTARGETSYSROOT)/usr/include/xx
CFLAGS += -I$(SDKTARGETSYSROOT)/usr/include/yy
CFLAGS += -I$(SDKTARGETSYSROOT)/usr/include/zz

LIB_XYZ_SRC = a.c
LIB_XYZ_SRC += b.c
LIB_XYZ_SRC += c.c
LIB_XYZ_SRC += d.c
LIB_XYZ_SRC += e.cpp
LIB_XYZ_SRC += f.cpp
LIB_XYZ_SRC += g.cpp

LIB_XYZ_SRC_BASE = $(basename $(notdir $(LIB_XYZ_SRC)))
LIB_XYZ_SRC_DIR = $(addprefix $(OBJDIR)/, $(LIB_XYZ_SRC_BASE))
LIB_XYZ_SRC_OBJ = $(addsuffix .o, $(LIB_XYZ_SRC_DIR))

define make-cmd-cc
$2 : $1
@mkdir -p $(OBJDIR)
$$(CC) -shared -fPIC $$(CFLAGS) -MMD -MT $$@ -MF [email protected] -c -o $$@ $$<
endef

# build source files
$(foreach afile,$(LIB_XYZ_SRC),\
$(eval $(call make-cmd-cc,$(afile),\
$(addsuffix .o,$(addprefix $(OBJDIR)/,$(basename $(notdir $(afile))))))))

$(TARGET_LIB_XYZ_OUTPUT) : $(LIB_XYZ_SRC_OBJ)
$(CC) -o $@ -shared -fPIC $(LIB_XYZ_SRC_OBJ) $(LDFLAGS) $(CFLAGS)

### abc###
TARGET_BIN_ABC = abc
TARGET_BIN_ABC_OUTPUT = $(OBJDIR)/$(TARGET_BIN_ABC)

TARGET_BIN_SRC = a.c
TARGET_BIN_SRC += b.c

TARGET_BIN_BASE = $(basename $(notdir $(TARGET_BIN_SRC)))
TARGET_BIN_DIR = $(addprefix $(OBJDIR)/, $(TARGET_BIN_BASE))
TARGET_BIN_OBJ = $(addsuffix .o, $(TARGET_BIN_DIR))

define make-cmd-cc-exe
$2 : $1
@mkdir -p $(OBJDIR)
$$(CC) $$(CFLAGS) -MMD -MT $$@ -MF [email protected] -c -o $$@ $$<
endef

# build source files
$(foreach afile,$(TARGET_BIN_SRC),\
$(eval $(call make-cmd-cc-exe,$(afile),\
$(addsuffix .o,$(addprefix $(OBJDIR)/,$(basename $(notdir $(afile))))))))

$(TARGET_BIN_ABC_OUTPUT) : $(TARGET_BIN_OBJ)
$(CC) -o $@ $(TARGET_BIN_OBJ) $(LDFLAGS) $(CFLAGS)

### all ###
alldep: $(TARGET_LIB_XYZ_OUTPUT) $(TARGET_BIN_ABC_OUTPUT)

clean:
$(RM) -rf $(OBJDIR)

标签:BIN,SRC,abc,TARGET,LIB,libxyz,XYZ,makefile,OBJDIR
From: https://www.cnblogs.com/huangguanyuan/p/18036956

相关文章

  • ABC087D (套路题)
    难度1套路题对于多个\(x_{i}-y{i}=k_{i}\)的约束条件,考虑连边再dfs一下,如果冲突就exit#include<bits/stdc++.h>#defineendl"\n"usingnamespacestd;structnode{ longlongto,val;}p;longlongT,n,m,x,y,z,dis[100005],tot[100005];boolvis[100005];vector<nod......
  • abc305_f (构造实现)
    首先考虑正常的怎么做,就是一遍dfs,是\(O(n)\)的,然而这题在到达每一个点时都要输出它的下一个点才能到达下一个点,同时看到这个\(2n\)觉得不对劲,自然想到走过去走回来,耗2n代码实现还是有点东西的,走过去好搞,但走回来时怎么办呢。我们想到dfs是一个栈,所以在要退出时输出就可以了#inc......
  • ABC283E (dp思想)
    难度1这题看到一点思路也没有,但是看到最小操作数想到二分,dp和贪心,二分答案的check显然不会,贪心不会。发现对于一行,前面的\(i-2\)是不会影响的,这一行也不会影响后面的\(i+2\)行,所以是dp。考虑如何设计状态因为\(i-1\)和\(i+1\)行都会影响,所以设计出来一个dp[i][0/1][0/1][0/1]的东......
  • P1240+P1350+ AT_abc282_g得出的一些dp技巧
    在遇到一些题目在设状态时,前面的状态对后面的有影响,比如在P1240和P1350中前面的放置会对后面的有影响,正常的状态是不行的。以前可能考虑状态压缩,但现在我们可以通过发现前面状态的一些共性,比如在P1240+P1350中前面放了k个車那么一定有k行被占用,所以就不用记录之前那些行被占用了。......
  • [ABC314Ex] Disk and Segments题解(退火实现)
    一到比较水的退火题(虽然也调了3h)题意在平面直角坐标系中,有\(n\)条线段,第\(i\)条的端点是\((a_i,b_i)\)和$(c_i,d_i)$,任意线段不共点。(这里笔者为了方便会默认\(a_i<c_i\))你要在平面上画一个圆,使得任意一条线段都和圆周或圆内部有至少一个公共点,求满足条件的圆的最小......
  • [ABC173E] Multiplication 4
    这到题有两个需要注意的点:1.两个1e9量级的数字的比值,用double的精度是不够的,要用double2.这道题需要输出数学意义上取模的值,需要(ans+mod)%mod转化成正数这道题测试点巨多,有整整四十个#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#inclu......
  • AT_abc213_d [ABC213D] Takahashi Tour 题解(图&深搜)
    传送门题意有一个\(n\)个点的无向图。从根节点\(1\)开始,按如下规则遍历整个图:如果有连接这个点的其他点没有走过,则到这个点。如果有多个点,那么按从小到大的顺序走。如果有这个点没有其他点或者连接这个点的其他点都走过了,那么:如果这个点是根节点\(1\),结束。否则回......
  • At-abc342
    AtCoderBeginnerContest342(已更新:CD)C似曾相识的经典映射题……而只会map的蒟蒻成功又被卡住了简单的用map映射无法处理如r->a,a->r这样的多重映射,应该在先存下原本的信息,再作映射写到这突然悟了……再改改果然是没有悟一点(⊙﹏⊙),由于只处理26个字母,每次修改实时更......
  • ABC342总结
    ABC342总结A+B+C+D虽然有奖,但是一无所获,都排到2000名左右了。赛时快速通过前四题,但是第五题被题目迷惑,第六题思路混乱,第七题本来是能力范围之内(数据结构是chnoier的特长),但是没读题。E一个最短路,这是有提示的,但是有一个迷惑信息。题目让我们求从A最晚出发的时间能到达N,其......
  • Atcoder ABC 342 全题解
    闲话当我还是一个只会AB的小蒟蒻时,由于不会C又看不懂官方题解,只好看网上的题解。结果:ABC签到题不讲AB对着题意模拟即可。A有个好玩的做法,先看前两个,如果不同跟第三个比较,如果相同看后面哪个字母跟第一个不一样。C由于是将所有的$c_i$替换,所以可得同一个字母最......