C++ 从对象文件列表(*.o)生成库(lib.a)的makefile
我有一个问题,因为我从来没有写过任何makefile。所以如果有人能帮我,我会变得快乐。我有很多不同的.o文件,它们存储在不同的文件夹中。例如: folder1:obj1.oC++ 从对象文件列表(*.o)生成库(lib.a)的makefile,c++,unix,gcc,makefile,gnu,C++,Unix,Gcc,Makefile,Gnu,我有一个问题,因为我从来没有写过任何makefile。所以如果有人能帮我,我会变得快乐。我有很多不同的.o文件,它们存储在不同的文件夹中。例如: folder1:obj1.o folder2:obj2.o folder3:obj3.o 我需要makefile,它将根据我发送到makefile的文件(如param)构建库。参数也应该是makefile,并包含有关存储必要文件的文件夹的信息 例如,我想从存储在folder1和folder2中的对象构建lib,而不使用folder3。因此,作为参数发送
folder2:obj2.o
folder3:obj3.o 我需要makefile,它将根据我发送到makefile的文件(如param)构建库。参数也应该是makefile,并包含有关存储必要文件的文件夹的信息 例如,我想从存储在folder1和folder2中的对象构建lib,而不使用folder3。因此,作为参数发送到主makefile的makefile必须包括到folder1和folder2的路由: 本地库:=../folder1
本地_libs+=../folder2 主makefile应该解析该信息,并调用libtool utilite从该文件夹中的文件创建lib。有人能帮忙吗
我想这很容易实现,示例将非常好 您需要一个规则来输入
.o
文件,输出.a
文件,并调用ar
命令来完成工作。比如:
lib.a: $(OBJECTS)
${AR} -cr ${@} ${^}
GNU make不支持在命令行上将参数“传递到makefile” 在执行makefile时,您有两种基本的机制来设置make使用的参数(我假设您使用的是gnumake,并且他的建议并非都适用于其他make):
- 写入子基文件,可能使用脚本。如果makefile有一行
gmake将包含include file.mk
的内容。更改file.mk
file.mk的内容,就可以更改makefile的行为
- 设置时,Make可以从环境变量中获取变量值。这提供了一个强大的机制,让用户自定义makefile的行为