程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> makefile FAQ

makefile FAQ

編輯:C++入門知識

Q1. =  , :=, +=, ?= 的區別
 Q:在看mk腳本的時候經常有看到 := ,+=,容易混淆,這四者間什麼區別呢。
 A:   稍微解釋一下,在結合實例看看
      = 是最基本的賦值
:= 是覆蓋之前的值?= 是如果沒有被賦值過就賦予等號後面的值
+= 是添加等號後面的值
對於“=”,make會將整個makefile展開後,再決定變量的值。也就是說,變量的值將會是整個makefile中最後被指定的值。看例子:
equal.mk
[cpp]  www.2cto.com
x = foo 
y = $(x) bar 
x = xyz 
[cpp] 
 
對於    “:=”表示變量的值決定於它在makefile中的位置,而不是整個makefile展開後的最終值。
colonequal.mk
[cpp] view plaincopyprint?
x := foo 
y := $(x) bar 
x := xyz 
對於最終y的值來說:equal.mk 來說 y的結果就是xyzbar     colonequal.mk中有的結果是foobar

Q2. missing separator.  Stop.
跟著大牛的博文敲了一遍makefile 的template,
[python]
edit : main.o kbd.o command.o display.o / 
insert.o search.o files.o utils.o 
cc -o edit main.o kbd.o command.o display.o / 
insert.o search.o files.o utils.o 
 
   main.o : main.c defs.h 
cc -c main.c 
   kbd.o : kbd.c defs.h command.h 
cc -c kbd.c 
   command.o : command.c defs.h command.h 
cc -c command.c 
   display.o : display.c defs.h buffer.h 
cc -c display.c 
   insert.o : insert.c defs.h buffer.h 
cc -c insert.c 
   search.o : search.c defs.h buffer.h 
cc -c search.c 
   files.o : files.c defs.h buffer.h command.h 
cc -c files.c 
   utils.o : utils.c defs.h 
           cc -c utils.c 
   clean : 
rm edit main.o kbd.o command.o display.o / 
insert.o search.o files.o utils.o 


結果運行了一下:
Q2: missing separator.  Stop
A2 :好吧,第二行沒有沒有分隔符,加上,再運行一次,額問題二出現
[cpp] 
Makefile:4: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop. 
Q3:did you mean TAB instead of 8 spaces
A3: 好吧是我賤,一定要用VIM編輯,換其他編輯器多好,沒把Tab 退格設置成4位。 :set tabstop=4

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved