gpt4 book ai didi

unix - Automake:AM_CFLAGS 无效

转载 作者:行者123 更新时间:2023-12-03 23:57:33 25 4
gpt4 key购买 nike

我试图在 Automake 中添加一些编译选项,但没有一种方法有效。

这是我的 configure.ac :

AC_INIT(...)
AC_PREREQ([2.59])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.10 foreign -Wall no-define])
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile test/Makefile])
AC_LANG(C++)
AC_OUTPUT

我有 parent Makefile.am (在顶级目录中):
#AM_CFLAGS = ... # doesn't work
AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
SUBDIRS = src test
dist_noinst_SCRIPTS = autogen.sh

和一个 Makefile.am对于每个源目录; src/Makefile :
include_HEADERS = ...
lib_LIBRARIES = ...

test/Makefile :
#AM_CFLAGS = ... # doesn't work
bin_PROGRAMS = myprog #test
myprog_SOURCES = ...
myprog_LDADD = ../src/libmylib.a
#myprog_CFLAGS = ... # Doesn't work either

我尝试取消注释注释行的所有组合,即:
  • 添加 AM_CFLAGS = ...给 parent Makefile.am - 这应该为所有受影响的源设置 CFLAGS
  • 添加 AM_CFLAGS = ...到另外两个Makefile.am s
  • 添加 myprog_ CFLAGS = ...到 Makefile.am(这应该在编译 myprog 时设置 CFLAGS)

  • 但这些都没有任何影响。我的程序( myprog )和它的库( mylib )都一直在编译/链接一些默认标志,比如 -DHAVE_CONFIG -g -O2 .

    我也尝试使用 INCLUDES而不是 AM_CFLAGS ,但没有帮助。

    任何人都知道这里发生了什么以及如何解决它?

    最佳答案

  • 看起来您正在编译 C++,在这种情况下,要使用的变量是 AM_CXXFLAGS .
  • 设置 AM_CXXFLAGS应该在 Makefile.am声明您实际编译的内容(即 bin_PROGRAMSlib_LTLIBRARIES 、...)。
  • 如果您重复自己,请不要忘记 automake 支持 include陈述。
  • 递归使被认为是有害的。现代汽车制造商支持 subdir-objects .如果一个 Makefile.am失控,使用 include声明。
  • 打开 libtool 的现代方法是 LT_INIT ,不是 AC_PROG_LIBTOOL .
  • AC_LANG(C++)configure.ac 处不做任何事情.它设置运行配置测试时使用的语言。此外,AC_LANG_PUSHAC_LANG_POP是更聪明的方法来做到这一点。
  • 你为什么要分配给 ACLOCAL_AMFLAGS像那样?
  • 关于unix - Automake:AM_CFLAGS 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457140/

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