2011-09-26 17 views
1

在Arch Linux的PKGBUILD的衝浪瀏覽器,有:CPPFLAGS在config.mk

sed -i 's/CPPFLAGS =/CPPFLAGS +=/g' config.mk 
sed -i 's/CFLAGS =/CFLAGS +=/g' config.mk 
sed -i 's/LDFLAGS =/LDFLAGS +=/g' config.mk 

爲什麼必須將國旗從

CPPFLAGS = -DVERSION=\"${VERSION}\" 

改爲

CPPFLAGS += -DVERSION=\"${VERSION}\" 

我已經看過谷歌,但沒有看到任何關於這件事。有人可以請解釋並告訴我在哪裏閱讀更多關於這些標誌?

回答

1

我做了很多谷歌搜索,發現這種模式(Surf的是here)似乎在Arch Linux PKGBUILD文件中相當常見。另一個例子是DWM's PKGBUILD

顯然它正在修補config.mk文件,因此當make被調用時,這些值被附加到標誌而不是覆蓋標誌(必須已經在別處設置)。所以必須保留現有的設置。這似乎只是由包構建者默認完成的,所以很難找到原因。

進一步看,我發現關於DWM的config.mk文件,其中筆者注意到,該文件的版本覆蓋國旗在makepkg.conf設置這是main configuration file for makepkg,這使得每臺機器調整編譯設置this bug report。這似乎是你找到的一個合理的解釋。從這個頁面上,CFLAGS默認值將是這樣的:

CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe" 

所以修補config.mk文件將建立包的時候會導致以下情況:

CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -std=c99 -pedantic -Wall -Os -I. ....." 
+0

謝謝@Ben斯科特。我贊成你的回答,因爲我沒有享有盛譽的聲譽。但我不明白「將值附加到標誌上,而不是僅僅設置標誌。」但它給了我更多的谷歌,謝謝。 – Edouard

+0

@Edouard我擴大了我的答案一點,以解釋什麼是附加 –

+1

@ Edouard:見http://www.gnu.org/s/hello/manual/make/Appending.html – reinierpost