在用于冲浪浏览器的Arch Linux PKGBUILD中,有:
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}\"
我调查了谷歌,但没有看到任何有关此事的内容。有人可以解释并告诉我在哪里可以阅读更多有关这些旗帜的信息吗?
答案 0 :(得分:1)
我做了很多谷歌搜索,发现这种模式(Surf的here)在Arch Linux PKGBUILD文件中看起来相当普遍。另一个例子是DWM's PKGBUILD。
显然它正在修补config.mk
文件,以便在调用make
时,将值附加到标志而不是覆盖标志(必须已在其他地方设置)。因此必须存在需要保留的现有设置。这似乎只是由包构建器默认完成,因此很难找到原因。
进一步查看我发现this bug report与DWM的config.mk
文件有关,其中作者注意到该文件的某个版本覆盖了makepkg.conf
中设置的main configuration file for makepkg
标记。 ,允许调整每台机器的编译设置。这似乎是你发现的一个合理的解释。在该页面中,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. ....."