在配置/制作时将编译标志附加到 CFLAGS 和 CXXFLAGS
Posted
技术标签:
【中文标题】在配置/制作时将编译标志附加到 CFLAGS 和 CXXFLAGS【英文标题】:Append compile flags to CFLAGS and CXXFLAGS while configuration/make 【发布时间】:2014-06-17 22:15:46 【问题描述】:我正在尝试构建的项目具有默认标志
CFLAGS = -Wall -g -O2
CXXFLAGS = -g -O2
我需要在这两个变量上附加一个标志 -w
(以删除:'将所有警告视为错误')
我有办法解决,给
make 'CFLAGS=-Wall -g -O2 -w'; 'CXXFLAGS=-g -O2 -w'
或
运行./configure
并静态修改Makefile
但我想在运行 configure
或 make
时将我的选项附加到现有选项中
帖子 Where to add a CFLAG, such as -std=gnu99, into an autotools project 方便地使用宏来实现这一点。
【问题讨论】:
【参考方案1】:你几乎是对的;为什么要加分号?
在configure
线上进行操作:
./configure CFLAGS='-g -O2 -w' CXXFLAGS='-g -O2 -w'
在make
行:
make CFLAGS='-g -O2 -w' CXXFLAGS='-g -O2 -w'
但是,这并不能真正消除 将所有警告视为错误;删除所有警告。所以同时指定-Wall
和-w
没有意义。如果您想保留警告但不将其视为错误,请使用 -Wall -Wno-error
标志。
另外,大多数默认启用-Werror
的configure
脚本也有一个标志,例如--disable-werror
或类似的。运行./configure --help
看看有没有类似的东西。
【讨论】:
有没有办法让我永远不指定此统计信息,例如 CFLAGS='$CFLAGSCFLAGS
的默认值始终只启用调试/优化,因此对于大多数系统,它通常应始终为-g -O2
。在CFLAGS
中添加-I
、-D
等其他重要标志是不正确的(根据编码标准)。所以总是覆盖它应该是安全的。
如果你不能在不保留包默认值的情况下分配 CFLAGS,那么软件包包含一个应该报告给包维护者的错误。以上是关于在配置/制作时将编译标志附加到 CFLAGS 和 CXXFLAGS的主要内容,如果未能解决你的问题,请参考以下文章