2010年9月23日 星期四

makefile 常用的變數

  • makefile 常用的變數

    
          $?     代表需要重建(被修改)的相依性項目。
    
          $@    目前的目標項目名稱。
    
          $<     代表目前的相依性項目。
    
          $*     代表目前的相依性項目,不過不含副檔名。
    
    
    
    1. 例:以 $@ 代表目前的目標 (target) 項目。
      LIBS = -lm 
      OBJS = main.o haha.o sin_value.o cos_value.o 
      CFLAGS = -Wall 
      main: ${OBJS} 
              gcc -o $@ ${OBJS} ${LIBS}  <== 在此 $@ 即 main 。 
      clean: 
              rm -f main ${OBJS}
      


  • makefile 中兩個特別字元,可以加在要執行的命令之前:


    1. - :make 會忽略命令的錯誤。


      1. 如果希望產生一個目錄,但希望忽略錯誤,可能是因為該目錄已經存在。


        -mkdir /usr/local/repository
        

      2. 如果希望清除目標檔案,但希望忽略錯誤,可能是因為該檔案不存在。


        clean:
           -rm main.o 2.o 3.o
        

    2. @ :make 不會在標準輸出上,顯示要執行的命令。

    3. 判斷式 if 起始為符號  @,讓 make 在執行該法則時,停止印出標準輸出的文字。



      install: myapp
         @if [ -d $(INSTDIR) ]; \
          then \
            ...;\
         fi
      
      
Other references:

沒有留言: