在配置/ make时,将编译标志附加到CFLAGS和CXXFLAGS

Vig*_*ren 32 automake autoconf makefile configure

我正在尝试构建的项目具有默认标志

CFLAGS = -Wall -g -O2

CXXFLAGS = -g -O2
Run Code Online (Sandbox Code Playgroud)

我需要在-w这两个变量上附加一个标志(删除:'将所有警告视为错误')

我有办法解决,给

make 'CFLAGS=-Wall -g -O2 -w'; 'CXXFLAGS=-g -O2 -w'
Run Code Online (Sandbox Code Playgroud)

要么

运行./configure并静态修改Makefile

但我想追加我的选择与现有的选项运行时configuremake

帖子 将一个CFLAG(例如-std = gnu99)添加到autotools项目中的 位置可以方便地使用宏来实现此目的.

Mad*_*ist 54

你几乎把它弄好了; 你为什么加分号?

要做到这一点configure:

 ./configure CFLAGS='-g -O2 -w' CXXFLAGS='-g -O2 -w'
Run Code Online (Sandbox Code Playgroud)

要做到这一点make:

 make CFLAGS='-g -O2 -w' CXXFLAGS='-g -O2 -w'
Run Code Online (Sandbox Code Playgroud)

但是,这并没有真正删除所有警告作为错误 ; 删除所有警告.因此,同时指定-Wall-w没有任何意义.如果要保留警告但不将其视为错误,请使用-Wall -Wno-error标志.

或者,默认情况下configure启用-Werror的大多数脚本也具有诸如--disable-werror或类似的标志.跑./configure --help,看看是否有类似的东西.

  • 有没有一种方法可以让我不每次都以统计方式指定此值,例如 CFLAGS=' $CFLAGS <my-options>',以保留已配置的内容并且也不知道它。 (4认同)
  • 如果您无法在不保留软件包默认值的情况下分配 CFLAGS,则该软件包包含一个错误,应将其报告给软件包维护者。 (3认同)
  • 不,这是不可能的(至少在不修改makefile的情况下是不可能的)。根据autoconf编码标准,“ CFLAGS”的默认值始终仅启用调试/优化,因此对于大多数系统,通常应始终为“ -g -O2”。(根据编码标准)将其他重要标志(例如-I,-D等)添加到CFLAGS中是不正确的。因此始终总是覆盖它应该是安全的。 (2认同)