【问题标题】:CPPFlags in config.mkconfig.mk 中的 CPPFlags
【发布时间】:2011-09-26 08:37:21
【问题描述】:

Arch Linux PKGBUILD for surf 浏览器中,有:

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}\"

我已经查看了谷歌,但没有看到任何关于此的内容。有人可以解释一下并告诉我在哪里可以阅读更多关于这些标志的信息吗?

【问题讨论】:

    标签: linux compilation makefile flags


    【解决方案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. ....."
    

    【讨论】:

    • 谢谢@Ben Scott。我接受您的回答,因为我没有声誉可以投票。但我不明白“将值附加到标志而不是直接设置标志”。但它给了我更多的谷歌,谢谢。
    • @Edouard 我稍微扩展了我的答案以解释附加的内容
    猜你喜欢
    • 2011-11-18
    • 2010-10-04
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2014-07-16
    • 1970-01-01
    相关资源
    最近更新 更多