gpt4 book ai didi

c++ - 生成库的多个实例的 Makefile

转载 作者:行者123 更新时间:2023-11-28 04:54:41 25 4
gpt4 key购买 nike

生成多个库文件实例的最佳方法是什么。例如,考虑以下示例:

Lib.h (Inst1)        Lib.h (Inst2)
¦ ¦
----------------------
¦
Lib.c
¦
----------------
¦ ¦
FolderA FolderB
(Lib.a) (Lib.a) -> Here are 2 different instances of the library

注意:两个版本的 Lib.a 名称相同但内容不同。例如,当包含包含不同的#define 值时,可能会发生这种情况:

#define VAR1 0 -> Defined in Lib.h (Inst1)
#define VAR1 5 -> Defined in Lib.h (Inst2)

=> 几个版本的 Lib.a

我曾想过拥有一个包含所有可能的组合所需的主 makefile,但这很快就会变得难以管理。

这可以以结构化的方式完成吗?执行此类操作的典型方法是什么?

最佳答案

假设您要根据现有lib.h 的内容生成lib.a(该文件只有一个拷贝,但可以有不同的内容...),你可以这样做:

target_dir = $(shell some commands to figure out desired target dir from lib.h)

all: ${target_dir}/lib.a

%/lib.a: common/lib.h
@echo doing some commands to build lib.a

这会根据 lib.h 的内容在正确的目录中构建 lib.a。

另一方面,如果您有多个 lib.h 拷贝,那么您想要的效果如下:

%/lib.a: %/lib.h
@echo doing some commands to build lib.a from $^

最后,如果目录名称不对齐,您可以使用一系列规则来映射它:

FolderA/lib.a: Inst1/lib.h
FolderB/lib.a: Inst2/lib.h

%/lib.a:
@echo doing some commands to build lib.a from $^

如果你想基于某个数组或类似的东西生成多个版本的 lib.h,那就是另一回事了......

关于c++ - 生成库的多个实例的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453391/

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