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

问题描述 投票:0回答:2

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

CFLAGS = -Wall -g -O2

CXXFLAGS = -g -O2

我需要向这两个变量附加一个标志

-w
(以删除:“将所有警告视为错误”)

我有一个方法可以解决,给

make 'CFLAGS=-Wall -g -O2 -w'; 'CXXFLAGS=-g -O2 -w'

运行

./configure
并静态修改
Makefile

但是我想在运行时将我的选项与现有选项一起附加

configure
make

帖子 在 autotools 项目中添加 CFLAG(例如 -std=gnu99)的位置 方便地使用宏来实现这一点。

makefile configure autoconf automake
2个回答
75
投票

你几乎猜对了;为什么要加分号?

要在

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
标志。

或者,大多数默认启用

configure
-Werror
脚本也有一个标志,例如
--disable-werror
或类似标志。运行
./configure --help
看看是否有类似的东西。


0
投票

我遇到了同样的问题,也找不到简单的解决方案。我所做的是修改 Makefile 模板(

Makefile.config.in
)。例如,模板有一行

CFLAGS    = @CFLAGS@ @DEFS@ $(C_COMPILE_FLAGS)

我改成

CFLAGS    = @CFLAGS@ @DEFS@ $(C_COMPILE_FLAGS) $(CFLAGS_USER)

之后,我可以这样使用:

./configure [options]
make CFLAGS_USER="-fPIC"
© www.soinside.com 2019 - 2024. All rights reserved.