zoukankan      html  css  js  c++  java
  • makefile $@, $^, $<, $?

    http://www.cnblogs.com/gamesun/p/3323155.html

    http://blog.csdn.net/kesaihao862/article/details/7332528

    makefile $@, $^, $<, $?

    $@  表示目标文件
    $^  表示所有的依赖文件
    $<  表示第一个依赖文件
    $?  表示比目标还要新的依赖文件列表

    如一个目录下有如下文件:

    $ ls
    hello.c  hi.c  main.c  Makefile

    按照 Makefile 规则规规矩矩的写:

    复制代码
    main: main.o hello.o hi.o
            gcc -o main main.o hello.o hi.o
    
    main.o: main.c
            cc -c main.c
    
    hello.o: hello.c
            cc -c hello.c
    
    hi.o: hi.c
            cc -c hi.c
    
    clean:
            rm *.o
            rm main
    复制代码

    改为用上述符号进行替代:

    复制代码
    main: main.o hello.o hi.o
            gcc -o $@ $^
    main.o: main.c
            cc -c $<
    hello.o: hello.c
            cc -c $<
    hi.o: hi.c
            cc -c $<
    clean:
            rm *.o
            rm main
    复制代码

    再如:

    # 这是上面那个程序的Makefile文件

    main:main.o mytool1.o mytool2.o

    gcc -o main main.o mytool1.o mytool2.o

    main.o:main.c mytool1.h mytool2.h

    gcc -c main.c

    mytool1.o:mytool1.c mytool1.h

    gcc -c mytool1.c

    mytool2.o:mytool2.c mytool2.h

    gcc -c mytool2.c

  • 相关阅读:
    CodeForces
    HDU
    HDU
    POJ
    URAL
    POJ
    UVa
    UVa
    UVa
    UVa
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/5440008.html
Copyright © 2011-2022 走看看