使用ar在Makefile中合并静态库

问题描述 投票:1回答:1

我有很多静态库,我需要使用ar中的Makefile合并为一个文件。

例如,

ar -M <<EOM
CREATE app.a
ADDLIB lib1.a
ADDLIB lib2.a
ADDLIB lib3.a
....
....
....
ADDLIB libN.a
SAVE
END
EOM

这很好,只要我知道我需要添加为ADDLIB libX.a的所有库,就可以使用。我想使它自动化。我在Makefile中有一个变量,用于存储所有这些库。在Makefile目标内部,我想这样做,

my_target:
    # Get all libraries from the variable $(libraries).
    # Combine all of them into a single file using archiver as above

由于目标内部的每个“行”或子命令都在其自身的外壳中运行,因此我无法找到一种方法。

我有很多静态库,我需要在Makefile中使用ar组合成一个文件。例如,ar -M << []

c++ c makefile ar
1个回答
0
投票
我假设这是一个Makefile变量,而不是bash变量。我还假设这是一个用空格分隔的文件列表。您可以执行以下操作:

#Makefile trickery to create a variable that holds a single space: space := space += my_target: ar -M CREATE $(subst $(space), ADDLIB ,$(strip $(variables))

© www.soinside.com 2019 - 2024. All rights reserved.