config.mk中的CPPFlags

时间:2011-09-26 08:37:22

标签: linux compilation makefile flags

在用于冲浪浏览器的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}\"

我调查了谷歌,但没有看到任何有关此事的内容。有人可以解释并告诉我在哪里可以阅读更多有关这些旗帜的信息吗?

1 个答案:

答案 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. ....."