gpt4 book ai didi

makefile - 对相同源文件使用不同 CFLAGS 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 09:33:43 24 4
gpt4 key购买 nike

我需要两次构建相同的源代码树,

1 - 使用普通 cflags 构建项目二进制文件
2 - 使用 cflags 和 -fPIC 构建一个静态库,该库将是某种 SDK 来开发项目动态模块。

仅使用一个 Makefile,实现此目的的最佳方法是什么?

做一些事情会很好:

all: $(OBJECTS)

lib_rule: $(OBJECTS)
CFLAGS += -fPIC

.cpp.o:
$(CC) -c $< -o $@ $(CFLAGS)

但显然是做不到的。

谢谢

最佳答案

我过去使用过的一件事是不同的扩展名:

.cpp.o:
$(CC) -c $< -o $@ $(CFLAGS)

.cpp.lo:
$(CC) -c $< -o $@ $(CFLAGS) $(EXTRA_CFLAGS)

然后,您从 .lo 文件构建静态库,并从 .o 文件构建二进制文件:
prog: a.o b.o

libsdk.a: a.lo b.lo

假设您使用的是 GNU Make,您可以使用一些内置函数来只需要维护一次对象列表:
OBJS = a.o b.o
LOBJS = $(patsubst %.o, %.lo, $(OBJS))

关于makefile - 对相同源文件使用不同 CFLAGS 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2517999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com