安装过程中,如何使用一些外部工具创建正确的make文件?

时间:2016-11-01 14:25:40

标签: c++ c++11 makefile

我必须“释放”一些C ++代码。基本上这个代码需要编译一个C ++ 11编译器和一些外部库(特别是gmp,gsl,mpfr库)。

所以基本上要使用的makefile必须在使用之前正确配置(因为实际的结构取决于编译器的安装位置和其他库的位置)。

在使用带make命令的makefile之前,有没有办法“预配置”makefile?

1 个答案:

答案 0 :(得分:0)

Autoconf和automake是重型工具,可以很好地完成你所描述的工作,但可能有一个更简单的解决方案。首先,请确保在适当的地方使用变量:

%.o:%.c
    $(CC) $(CFLAGS) $^ -o $@ 

program: $(OBJS)
    $(LD) $(LDFLAGS) ...

然后填充CC和LDFLAGS。您可以要求用户在命令行上覆盖它们,如下所示:

make CC=/opt/toolchains/xxx/yyy/gcc

请注意,即使您在makefile中定义CC,您在命令行中指定的值也会优先。或者,您可以执行可编辑的配置文件,并在makefile中包含这样的行:

 CONFIG_FILE := .configure
 TOOLCHAIN_DIR := $(sed -n "s/^\s*TOOLCHAIN:\s*\(\S*\).*$$/\1/p" < $(CONFIG_FILE))
 LIB_DIRS := $(sed -n "s/^\s*LIBS:\s*\(\S*\).*$$/\1/p" < $(CONFIG_FILE))

 CC:=$(TOOLCHAIN_DIR)/gcc
 LDFLAGS += $(addprefix -L,$(LIB_DIRS))

最重要的是,您可以在makefile中创建configure规则,以根据用户输入生成.configure文件。如果你需要超越它,你可能需要考虑autoconf。