制作Makefile

制作标准Makefile

Autotools工具

制作标准Makefile需要用到Autotools工具

1

详细制作图示可以参考GNU中的autoconf手册(该过程就需要用到上面的5个工具):

1

制作过程

结合上图使用相关指令演示制作过程,如果有相关指令找不到

sudo apt install xx
  1. 编写好源文件(test.c)

    autoscan
  2. 将configure.scan改为configure.ac

    mv configure.scan configure.ac
  3. 修改configure.ac

    vim configure.ac
    AC_INIT(test, 1.0, wolfnx@outlook.com)

    如果没有头文件,不使用autoheader,则可以将

    #AC_CONFIG_HEADERS([config.h])

    增加下面一个宏,表示最后需要使用automake工具

    AM_INIT_AUTOMAKE(test, 1.0)

    输出文件Makefile

    AC_OUTPUT(Makefile)
  4. 如果使用了configure.ac中使用了宏,那么需要aclocal,否则不需要,执行aclocal生成aclocal.m4。

    aclocal
  5. 执行autoconf生成configure

    autoconf
  6. 编写Makefile.am,参考automake手册:

    vim Makefile.am
    //增加如下两条语句
    bin_PROGRAMS = test
    test_SOURCES = test.c

    1

  7. 执行automake

    automake

    如果报错

    touch NEWS README AUTHORS ChangeLog
    automake --add-missing
  8. 执行configure,生成Makefile

    ./configure
  9. make

    //编译
    make
    //默认安装路径/usr/local/bin
    make install
    //生成压缩包,商业发布
    make dist

简单版Makefile

  • 例子:

    #Design by wolfnx
    
    TARGET  := lost
    Q       := @
    SRC_EXTENSION_NAME      :=.c
    
    #COBJS  += lost.o
    #COBJS  += swap.o
    
    COBJS   := $(patsubst %$(SRC_EXTENSION_NAME), %.o, $(wildcard *$(SRC_EXTENSION_NAME)))
    
    LDFLAGS :=
    CFLAGS  :=
    
    CROSS_COMPILE   :=
    CC      := $(CROSS_COMPILE)gcc
    LD      := $(CROSS_COMPILE)ld
    
    $(TARGET):$(COBJS)
    $(Q)$(CC) $(CFLAGS) -o $@ $^
    
    %.o:%$(SRC_EXTENSION_NAME)
    $(Q)$(CC) $(CFLAGS) -c -o $@ $^
    
    clean:
        $(Q)rm -f $(TARGET) $(BUILD) *.o

转载请注明出处:http://www.wolfnx.com/2018/05/19/MakefileGenerate

作者 : wolfnx
邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com

Click Me