autotools相关内容

在 C/C++ 项目中自动检测库依赖项的最佳方法是什么?

在 C/C++ 项目中自动检测库依赖项的最佳方法是什么? 我有一个项目,我在其中拥有机器上的所有依赖项.它构建并运行.现在我想组装一个 autotools 构建系统.我正在寻找一种好方法来自动检测所需的所有依赖项,例如使用的头文件和链接所需的库. 图书馆位似乎是我最难弄清楚的.我想能够说,为列表或其他东西中的每个函数生成 AC_CHECK_LIB 命令.我可能可以在 Perl 中做到这 ..
发布时间:2021-11-30 19:04:13 其他开发

使用 autotools 为共享库正确安装 config.h

我正在将使用 autotools 构建系统的 C++ 程序转换为使用共享库,介绍 libtool 的使用.大部分程序功能都放在共享库中,由主程序加载,以便将来其他程序可以访问公共代码. 在整个程序和库源中,自动标头生成的 config.h 与通常的宏一起使用: #if HAVE_CONFIG_H# 包含 #万一 在 configure.ac 中,我使用宏来生成它: AC_CONFIG_ ..
发布时间:2021-11-30 19:04:05 C/C++开发

使用autotools构建时如何生成源文件

使用 Make,我可以做类似的事情 generated.c: input.txt 生成器./generator input.txt >生成文件 我如何从自动工具中获得等效的功能?(在清理时删除 generate.c 也是一个奖励). 解决方案 我假设 input.txt 是一个已分发的源文件,您不> 想要分发generated.c(即必须由每个用户构建),并且那个generator也是 ..
发布时间:2021-11-30 19:03:47 其他开发

Fedora x86_64 上供应商库的 config.site

我在 Fedora 26、x86_64 上构建一些基于 Autotool 的库时遇到问题.64 位 Fedora 将第三方和供应商库放在 /usr/local/lib64 中.Ubuntu 17 使用 /usr/local/lib 因此相同的项目可以正常构建. 我一直在使用 --libdir=/usr/local/lib64 但有三个库抵制它.我缺少 /usr/local 的 config. ..
发布时间:2021-11-30 19:02:50 其他开发

Autotools 交叉编译和生成源

我正在尝试使用自动工具(autoconf、automake、libtool)作为构建系统来创建库.库必须是可交叉编译的,但构建它的步骤之一是在整个过程中通过从源代码构建的可执行文件生成源代码. 问题是我无法使用 automake 的系统来构建中间二进制文件,因为当它进行交叉编译时,它不会在“--build"上运行以生成源. 解决这个问题的一种方法是创建单独的 autools 项目来构建 ..
发布时间:2021-11-30 19:02:42 其他开发

Autotools 检查 C++11

我使用 AX_CXX_COMPILE_STDCXX_0X(可以查看 autoconf-archive)来检查编译器的 C++11 功能.它正确地确定需要 -std=c++0x,但没有将其添加到 CXXFLAGS.我查看了宏源,它实际上进行了检查,但随后恢复了以前的标志. 我应该怎么做才能将 CXXFLAGS 设置为能够编译 c++11 源代码? 仅仅将 -std=c++0x 添加到 A ..
发布时间:2021-11-30 19:02:32 C/C++开发

Automake 生成二​​进制文件到 bin/而不是在 src/

我搜索了这个问题的答案,但找不到任何好的答案.也许他们老了,有些东西变了,所以我再问一次. 我的目录结构为: my_project src bin 我想要这样,当我在根目录中进行 make 时,二进制文件会放在 ./bin 中,而不是杂乱无章的 ./src.但是如何? 编辑:我正在使用 C++.我的 Makefile.am 没有什么特别之处.只是 bin_PRO ..
发布时间:2021-11-30 19:02:24 其他开发

GNU 自动工具:调试/发布目标?

我一直在寻找这个:我目前正在将一个中等大小的程序转换为 autotools,来自基于 Eclipse 的方法(带有 makefile) 我总是习惯于使用“调试"版本,其中包含所有调试符号且没有优化,以及“发布"版本,但不包含调试符号和最佳优化. 现在我正在尝试使用 autotools 以某种方式复制它,因此我可以(也许)执行以下操作: ./configure进行调试 哪个将包含所有 ..
发布时间:2021-11-30 19:02:13 C/C++开发

CFLAGS 与 CPPFLAGS

我知道 CFLAGS(或 CXXFLAGS for C++)用于编译器,而 CPPFLAGS 用于预处理器. 但我还是不明白其中的区别. 我需要为#include 包含的头文件指定一个包含路径——因为#include 是一个预处理器指令,预处理器 (CPPFLAGS) 是我唯一关心的吗? 什么情况下需要给编译器额外的include路径? 一般来说,如果预处理器找到并包含所需 ..
发布时间:2021-11-30 19:01:28 其他开发

PKG_CHECK_MODULES 被认为是有害的?

各种开发人员不鼓励使用PKG_CHECK_MODULES(例如,在这个答案中)但就我所寻找的而言,没有明确、全面的解释他们的原因.所以,我问: 为什么 PKG_CHECK_MODULES 会有害? 有哪些替代方案? 我今天第一次使用它.我发现它非常有用,特别是在处理非常复杂的库集时,例如 GTK+,我在其中拥有所有这些依赖项: -I/usr/lib/i386-linux-gnu/g ..
发布时间:2021-11-30 19:01:21 其他开发

带有 autoconf 的 ARM 编译器

我正在尝试使用 autoconf 为 ARM 架构编译一些文件.我在 Ubuntu 12.04 中编译它们,目标系统是 BeagleBoard XM.我运行以下命令: ./configure --host=arm-linux-gnueabi -prefix=${CSTOOL_DIR}/linux_arm_tool 并得到这个结果: configure: 警告:如果你想设置--build 类型 ..
发布时间:2021-11-17 21:41:38 其他开发

在 OSX 上使用 i386 arch 而非 x86_64 构建 libFLAC

我正在尝试构建 libFLAC 以在我的项目中使用,但是在链接方面,GCC 忽略了该库,因为它说它不是为当前架构 (i386) 构建的.当我以 64 位编译程序时,它正确链接了库,这意味着该库是为 x86_64 架构编译的.不幸的是,我的程序不能在 64 位上运行,所以我需要将 libFLAC 编译为 i386.我试过使用 ./configure --build=i386 但它似乎没有改变任何东西 ..
发布时间:2021-11-17 02:57:03 其他开发

确保一次包含config.h

我有一个图书馆项目,正在努力移植以使用Linux中的autotools套件.我对自动工具很陌生(本周).我已经了解了其操作的基础知识.我对如何防止重新定义 config.h 的内容有疑问. 我很惊讶地发现生成的 config.h 文件也没有,1)将每个宏包装在 #ifndef 中,或者2)整个文件都没有包装在标准的 #ifndef CONFIG_H 中. 正如我所提到的,这段代码是在W ..
发布时间:2021-05-13 20:55:26 服务器开发

将基于gnulib的项目交叉编译到MinGW

我正在尝试将此项目交叉编译到MinGW. 该项目使用自动工具作为构建系统,并依赖于 libcurl , CUnit ,Jansson 和一些gnulib模块. 我已经为 x86_64-w64-mingw32 编译了所有依赖关系,并安装在/home/user/mingw64 下 我跑步: $ gnulib-tool-更新$ autoreconf -fi$ CURL_CFLAGS ..
发布时间:2021-04-12 20:42:30 其他开发

无法运行Makefile.am,我该怎么办?

我有一个C项目可以在Linux上编译和运行.这是一个很大的项目,包含许多子目录.父目录中有文件 Makefile.am 和 Makefile.in . 我尝试运行 make -f Makefile.am ,并出现以下错误: make:`Makefile.am'不需要做任何事情. 是什么意思?我该如何完成任务? 解决方案 这些文件与 Autotools 套件一起使用.使用 au ..
发布时间:2021-04-12 20:42:26 服务器开发

在C中的GNU automake中使用解析器

我是GNU自动工具的新手,在我的项目中使用lex和yacc解析器.将它们作为源包含在makefile.am中会导致以下错误: configure.in: ...AC_CHECK_PROGS(YACC,野牛yacc,无)如果测试"x $ YACC" ="xbison";然后YACC ="$ YACC -y"科幻AC_CHECK_PROGS(LEX,flex,none)... makef ..
发布时间:2021-04-12 20:27:41 其他开发