标签: autoconf

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

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

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项目中的 位置可以方便地使用宏来实现此目的.

automake autoconf makefile configure

32
推荐指数
1
解决办法
8万
查看次数

对configure脚本和Makefile.in感到困惑

我目前正在学习如何使用autoconf/ automaketoolchain.我似乎对这里的工作流程有一个大致的了解 - 基本上你有一个configure.ac生成可执行configure文件的脚本.configure然后由最终用户执行生成的脚本以生成Makefiles,因此可以构建/安装程序.

因此,典型最终用户的安装基本上是:

./configure
make
make install
make clean
Run Code Online (Sandbox Code Playgroud)

好的,现在我在这里困惑:

作为开发人员,我注意到自动生成的配置脚本有时不会运行,并且会出错:

config.status: error: cannot find input file: `somedir/Makefile.in' 
Run Code Online (Sandbox Code Playgroud)

这混淆了我,因为我认为配置脚本应该产生Makefile.in.所以谷歌搜索一些答案,我发现这可以用autogen.sh脚本修复,这基本上"重置"了autoconf环境的状态.一个典型的autogen.sh脚本将是这样的:

aclocal \
&& automake --add-missing \
&& autoconf
Run Code Online (Sandbox Code Playgroud)

好的.但作为终身用户,我终生下载了无数的tarball,我从来没有使用过autogen.sh脚本.我所做的只是解压缩tarball,并执行通常的configure/make/make install/make clean例程.

但作为一个现在正在使用 的开发人员,除非你先运行,否则autoconf它似乎configure并没有真正运行autogen.sh.所以我发现这非常令人困惑,因为我认为最终用户不应该运行autogen.sh.

那么为什么我必须先运行autogen.sh- 才能找到配置脚本Makefile.in?为什么configure脚本不能简单地生成它?

autoconf makefile configure

28
推荐指数
1
解决办法
1万
查看次数

configure.ac和configure.in,Makefile.am和Makefile.in之间有什么区别?

我已经看到了我配置的不同的东西.我有什么区别?仅使用一个是值得注意的吗?或者使用哪一个无关紧要?

automake autoconf makefile configure

27
推荐指数
1
解决办法
1万
查看次数

自动生成二进制文件到bin /而不是src /

我搜索了这个问题的答案,但找不到任何好处.也许他们已经老了,事情发生了变化,所以我再问一次.

我有一个目录结构:

我的项目

  • SRC

  • 箱子

我想要的是,当我在根目录中制作时,二进制文件放在./bin中,而不是混乱./src.但是怎么样?

编辑:我正在使用C++.我的Makefile.am没什么特别的.只是bin_PROGRAM和_SOURCES变量.

当我运行make时,生成的二进制文件被放入./src.我只想把它们放在./bin中.

automake autoconf autotools

26
推荐指数
3
解决办法
1万
查看次数

configure无法识别androideabi

我正在尝试使用android-ndk-r5独立工具链和autotools编译库.在执行./configure时,它失败了:

$ ./configure --host=arm-linux-androideabi
...snip...
checking host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized
configure: error: /bin/sh ./config.sub arm-linux-androideabi failed

显式设置CC和CXX也不起作用(configure表示使用--host).

NDK文档和各种在线资料似乎表明以这种方式使用独立工具链应该是可能的.这有什么不对?我该如何解决?(除了简单地放弃autoconf并回到Android.mk)

autoconf autotools configure android-ndk android-ndk-r5

26
推荐指数
3
解决办法
2万
查看次数

使用Autotools的默认编译器标志

我想知道如何设置默认的编译器/链接器/等.标志,如果我使用Autoconf/Automake组合.

例如,如果我没有设置任何内容,则默认编译器标志为"-O2 -g".我可以用其他东西覆盖它,例如,如果我想调试:

./configure 'CXXFLAGS=-O0 -g'
Run Code Online (Sandbox Code Playgroud)

但我发现默认配置很愚蠢,因为如果我启用优化,调试将变得不可能.所以默认标志应该是"-O2"或"-O0 -g",如果我configure没有参数运行.我该怎么做?

编辑:我尝试了以下解决方案:

  • 放到progname_CXXFLAGS=whateverMakefile.am.它不起作用,因为它将标志添加到默认标志而不是替换它们.
  • 放入CXXFLAGS=whateverconfigure.ac.这有效,但后来我无法覆盖它.

automake autoconf makefile

24
推荐指数
3
解决办法
3万
查看次数

如何在Autoconf中包含.m4文件?

我从Autoconf Archive下载了一个宏,我想使用它.我需要在configure.ac文件中放置什么才能使用这个宏?

autoconf

24
推荐指数
3
解决办法
2万
查看次数

PKG_CHECK_MODULES被认为有害吗?

各种开发人员不鼓励使用PKG_CHECK_MODULES(例如,在这个答案中),但就我所寻找的原因,没有明确,全面的解释其原因.所以,我问:

  • 为什么会PKG_CHECK_MODULES有害?
  • 有哪些替代方案?

我是一个人,今天第一次使用它.我发现它非常有用,特别是用于处理相当复杂的库集,例如GTK +,我拥有所有这些依赖项:

-I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 
-I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 
-I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 
-I/usr/include/freetype2 -I/usr/include/libpng12

-lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 
-lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0
-lgthread-2.0 -lrt -lglib-2.0 
Run Code Online (Sandbox Code Playgroud)

autoconf pkg-config autotools

23
推荐指数
2
解决办法
2万
查看次数

Autotools检查C++ 11

我使用AX_CXX_COMPILE_STDCXX_0X(可以查看autoconf-archive)来检查编译器的c ++ 11功能.它正确地确定了-std=c++0x所需,但不添加它CXXFLAGS.我看了一下宏源,它实际上检查了然后恢复了以前的标志.

我应该怎么做才能CXXFLAGS编译c ++ 11源代码?

只是添加-std=c++0xAM_CXXFLAGS不是很好的解决方案,因为我想在autoconf开发人员,而不是我在C++ 11模式下编译编译器的负担.

c++ autoconf autotools c++11

23
推荐指数
1
解决办法
8613
查看次数

./configure与指定版本的g ++

如何告诉'configure'文件使用指定版本的g ++进行编译?

谢谢.

autoconf gcc version configure

20
推荐指数
1
解决办法
2万
查看次数