问题标签 [automake]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
makefile - Autotools 的默认编译器标志
我想知道如何设置默认编译器/链接器/等。如果我使用 Autoconf/Automake 组合的标志。
例如,如果我没有设置任何东西,默认编译器标志是“-O2 -g”。我可以用其他东西覆盖它,例如,如果我想调试:
但是我发现默认配置很愚蠢,因为如果我启用优化,调试将变得不可能。configure
因此,如果我不带参数运行,默认标志应该是“-O2”或“-O0 -g” 。我该怎么做?
编辑:我尝试了以下解决方案:
- 放入
progname_CXXFLAGS=whatever
Makefile.am。它不起作用,因为它将标志添加到默认标志而不是替换它们。 - 放入
CXXFLAGS=whatever
configure.ac。这行得通,但是我以后不能覆盖它。
c - GNU AutoMake 中的显式中间对象文件
我有一个 C 应用程序,我正在将一组手工编码的 Makefile 转换为 GNU AutoMake。它有一个子目录,其中包含一个接口头和几个平台相关的实现。当前,选择一个实现并将其构建到该目录中具有固定名称的目标文件。然后使用驱动程序接口的代码链接到该目标文件并自动获取正确的驱动程序。
将此系统转换为使用 AutoTools 的最佳方法是什么?我已经让 AutoConf 为正确的驱动程序实现文件创建了一个替换。我只是不知道如何获得一个 AutoMake 目标,我可以将实现文件放入其EXTRA_*_SOURCES
和*_LDADD
变量中。我是否只需要放弃中间目标文件并将它们放入使用它们的程序目标的列表中?
编辑:感谢 ptomato 解决。
由于 Automake 的依赖解析,所有可能的源都必须在*_SOURCES
和中命名EXTRA_*_SOURCES
,如手册的条件源部分所述。因此,图书馆节实际上是:
c - 转换为 libtool 时 automake 和 autoconf 找不到 libtool
我正在尝试将 libcsv 转换为使用 libtool,这样我就可以在 mac os x 上使用它而不会破坏 makefile。当我尝试运行从工具生成的 makefile 时,出现以下错误:
我正在运行 OS X 10.5。因此,经过一番搜寻后,我注意到生成的 makefile 有一个空的 libtool var:
如果我将 LIBTOOL 设置为 libtool,那么一切都很好。我假设我在下面的 autoconf 或 automake 文件中犯了一个错误:
如果有任何帮助,这里是 config.log 的一部分:
那么有谁知道我做错了什么?
提前致谢。
c - 选择 autoconf 和 automake 版本
我看到我的 ubuntu linux 中有很多版本的 autoconf 和 automake 可用。如果我想从头开始创建一个新项目,最好的选择是什么,最新版本还是旧版本?
c - 在 automake 中使用条件
我最近从使用 Makefiles 切换到使用 Automake,但我不知道如何使用 automake 编写以下简单的 if 语句:
如果我使用自动制作,这甚至可能吗?既然它会自动生成 makefile,那么在 Makefile 模板中编写它是否有意义?还是我应该尝试找到某种方法将其添加到自动生成的 Makefile 中?
c - 将自定义代码添加到 Automake 生成的 Makefile
假设我想向 Automake 生成的 Makefile 添加运行时条件。有没有办法告诉 Automake 这个条件?
autotools - 使用 automake 配置脚本在 64 位 Linux 上构建 32 位?
我使用的是 64 位系统,但想要一组 32 位二进制文件。我必须将哪些选项传递给配置脚本以生成 32 位/x86 生成文件?
tar - Autotools - tar 这看起来不像 tar 存档
运行后,make distcheck
我收到消息说我已成功构建包并准备好分发。如果我解压它tar.gz
,tar -zxvf hello-0.2.tar.gz
它会成功提取其所有内容。但是,当我尝试在不同的机器中提取它们时,我得到:
奇怪的是它以前工作过。
在我试图构建包的机器上,我已经更新了我automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23
的问题,但仍然是同样的问题。
任何想法可能是什么问题?
linux - Automake:Makefile.am 中条件句的语法
我熟悉configure.acif VAR_NAME
中VAR_NAME
的 AM_CONDITIONAL 子句定义的位置。
Makefile.am 中是否有相应的“如果未定义”构造?
build-process - 使用 automake/Makefile.am 生成 IDL 实体
对于那些不熟悉 IDL(接口描述语言)的人来说,它抽象了数据描述以供跨平台(java、c、c++ 等)使用。我的项目具有从 Foo.idl 生成的依赖项 Foo.c、Foo.h、FooHelper.c 和 FooHelper.h。如何在 Foo.idl 更改时运行任意命令,但在构建过程中仍包含 Foo.c、FooHelper.c?
我目前的尝试向 Makefile.am 添加了一条规则——希望将规则复制到生成的 Makefile 中。
我努力了:
然后将 Foo.idl 添加到 my_program_SOURCES 但它在构建时不运行 the_generate_command。
我已经成功地从 IDL 生成
但它不会将 Foo.c、FooHelper.c 添加到编译过程中,因此它们永远不会被构建,只是由 the_generate_command 生成!
所有代码(包括 idl)都在 $PROJECT_DIR/src 中。