gpt4 book ai didi

c - 在 autotools 项目中添加 CFLAG(例如 -std=gnu99)的位置

转载 作者:太空狗 更新时间:2023-10-29 16:24:30 24 4
gpt4 key购买 nike

我有一个简单的 Autotools C 项目(不是 C++)。

CFLAG(通过检查)似乎是 -g -O2 .

我希望所有生成的 make 文件也有 -std=gnu99附加到 CFLAG,因为我使用 for (int i = 0; i < MAX; i++)和类似的。

我显然可以破解 Makefile,但这在 ./configure 上被覆盖了.

添加(或更改)代码所需的 CFLAG(与用户可能想要更改的 CFLAG 相对)的正确位置在哪里?

(请注意,这是 Where to add a CFLAG, such as -std=gnu99, into an (Eclipse CDT) autotools project 的部分副本,因为我得到的是我不想要的特定于 Eclipse 的答案。)


@DevSolar 的回答还没有帮助。 configure.ac文件(下方)生成 configure脚本(也在下方)。

配置文件:

dnl Process this file with autoconf to produce a configure script.

CFLAGS="$CFLAGS -std=gnu99"
AC_PREREQ(2.59)
AC_INIT(tuntest, 1.0)


AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE()

AC_PROG_CC

AC_CONFIG_FILES(Makefile src/Makefile)
AC_OUTPUT

$ grep CFLAGS 配置

CFLAGS
CFLAGS
To assign environment variables (e.g., CC, CFLAGS...), specify them as
CFLAGS C compiler flags
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
CFLAGS="-g"
CFLAGS=""
CFLAGS="-g"
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
CFLAGS="-g -O2"
CFLAGS="-g"
CFLAGS="-O2"
CFLAGS=
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'

最佳答案

autoconf 有一个宏:

就说:

AC_PROG_CC_STDC

在你的AC_PROG_CC之后,一切都会好起来的。

特别是当您使用其他没有 -std=gnu99 但默认在 C99 模式下运行的编译器时(或者有不同的选项 hpcc 的 -AC99 突然想到).

不会对那种事情使用CFLAGS

来自docs :

-- Macro: AC_PROG_CC_STDCIf the C compiler cannot compile ISO Standard C (currently C99),try to add an option to output variable `CC' to make it work.  Ifthe compiler does not support C99, fall back to supporting ANSIC89 (ISO C90).After calling this macro you can check whether the C compiler hasbeen set to accept Standard C; if not, the shell variable`ac_cv_prog_cc_stdc' is set to `no'.

关于c - 在 autotools 项目中添加 CFLAG(例如 -std=gnu99)的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com