- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 autotools C 项目需要使用另一个用 CMake 构建的库。它们是否等同于可与 CMake 一起使用的 AC_CONFIG_SUBDIRS?
最佳答案
我认为您想配置和构建基于 CMake 的项目作为配置和构建基于 Autotools 的宿主项目的一部分。这是可能的,并且有几种可行的方法可以做到这一点,但我不知道像 AC_CONFIG_SUBDIRS
这样完全预打包的东西是用于基于 Autotools 的子项目。
Autoconf 提供 a group of macros您可以通过它为 configure
或生成的要运行的 config.status
脚本指定自定义命令。您可以使用其中之一——可能是 AC_CONFIG_COMMANDS
,但也可能是 AC_CONFIG_COMMANDS_POST
——在子项目中运行 cmake
(以及任何需要的准备步骤) .就个人而言,我最喜欢这个选项。
AC_CONFIG_SUBDIRS
指示 configure
在指定的子目录中运行 configure
脚本,但那些其他 configure
脚本不不需要由 Autotools 生成。您可以想象在子项目目录中编写一个名为“configure
”的自定义包装脚本,以便父级 configure
运行,但它本身会执行对 cmake< 的适当调用
。顶层配置中的 AC_CONFIG_SUBDIRS
应该会在正确的时间运行该脚本。
我认为 Autoconf 已经为您似乎想要的东西提供了足够的支持,但是如果您不这么认为,那么您总是可以选择通过 configure 将您想要的任何 shell 代码写入
。您可能会发现为此编写一个自定义宏是值得的,尤其是当您有多个 CMake 子项目时,但这不是强制性的。请注意,此类命令与通过 configure
。交流AC_CONFIG_COMMANDS
& co 指定的命令不同。根据执行时间。
大概您将在构建和安装步骤中依赖递归 make
。无论您使用的是基于 Automake 的 Makefile.in
还是在顶层手动滚动的,完成这项工作都不难。
在您的顶级 Makefile.am
中使用一个 SUBDIRS
变量来指示 make
递归到 CMake 项目的子目录中,就像您一样会做任何其他项目的。在那里编写一个简单的 Makefile,递归到 build
子目录(您必须确保它是由 configure
创建和配置的)。这不应与子项目冲突,因为它假定使用了单独的构建目录。 glue makefile 可以调整目标和 make
变量以满足子项目构建系统的期望。
Automake 文档描述了 all the recursive targets顶层 Autotools makefile 可能会尝试递归构建,而 glue makefile 应该提供所有这些——尽管可能有很多只需要一个虚拟(但不是空的)配方。
Makefile.in
另一方面,如果您使用的是手动顶层 Makefile
模板,那么您可以完全控制递归 make
调用。在这种情况下,您仍然可以在子项目中使用粘合 makefile,但直接适应预期的 CMake 生成的 makefile 可能更容易、更清晰。
关于cmake - 如何处理具有 cmake 依赖性的 autotools 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56998084/
我正在编写一个小型库,并希望使用带有 automake 1.11 的 autotools 来访问它。唯一有趣的结果是库 libfoo.so。 我为库编写了一个单元测试,我希望在 make 过程中或在运
我有一个自动工具项目。如果用户在构建过程中进行了配置,我希望从项目中排除一些文件。例如,如果构建配置了 --no-gui ,则与 GUI 相关的文件不会包含在构建中。 autoconf 中此类标志的标
我需要将 libmagic 链接到我使用 autotools 构建的项目。 我目前的解决方案是:configure.ac中的LIBS+="-lmagic" 但我认为实现此目的更合适的方法是在 conf
我有一个用 C 编写的相当大的程序。它跨越多个文件,并进行了一些重组以试图弥补平台问题。具体来说,我有不同操作系统、体系结构和编译器的头文件,这些头文件定义了用于处理事物的宏。例如,-v flag 打
我正在编译一个 基于 autotools C 的项目 我收到了一些警告和错误。它们显示如下: foo.c:123: warning: some message 我希望它们显示如下: /full/pat
我需要将“-Wall -Werror”设置为项目中所有源文件的 CPPFLAGS。有没有办法在自动工具中做到这一点? 我在 configure.ac 中尝试了以下内容: AC_SUBST([AM_CP
我的应用程序使用 autotools 在 $pkgdatadir 中安装运行时所需的数据文件。应用程序的部分内容是用 C 编写的,数据目录的路径由 Makefile.am 中的以下语句设置: AM_C
我刚开始使用 autotools,如果这听起来有点基础但谷歌搜索并没有显示太多内容,请原谅我。 我将如何使用 autotools 生成自定义 conf 文件。 看是基于m4的configure包含了必
我在 autoconf 代码中看到很多关于被 dnl'ed 而不是 dnl'ed 的东西。什么是dnl? 最佳答案 来自 GNU M4 1.4.13 macro processor手动的: 8.1 D
例如,我想将选项 --enable-foo --enable-bar 添加到 ./configure 命令。 许多 ./configure 选项可以通过 BR2_ 配置间接设置,但许多软件有太多选项,
我需要构建一个配置有自动工具的库。通常的configure && make && make install步骤生成版本化的共享库,类似于libfoo.so.x.x是否可以修改configure.ac或
假设我有两个 autotools 项目: libmyutils libmypackage libmypackage 库依赖于 libmyutils。有没有办法让 libmypackage 链接到并引用
我正在构建一个小型库,并且正在使用 autotools。代码是在 C++ 中,它输出一些 html 代码。有很多与 html 代码相关的样式表和 javascript 代码。由于后者是固定的,因此代码
我正在研究自动工具。我有一些使用 java 类的 c++ 文件。我可以使用 autotools 为我的项目创建可执行文件,但我无法为项目中包含的 java 类创建可执行文件。我的项目将此 java 可
我想要一个用 autotools 构建的 c 库。老实说,我几乎不知道它们是如何工作的:/(我需要的库是“https://github.com/p4lang/PI”) 我已经执行了 ./configu
运行配置脚本后,我得到了一系列显示“已缓存”的输出。例如: checking for gcc... gcc checking for gcc... (cached) gcc ... checking
我正在尝试在 Cygwin 中编译一个包。我跑: ./configure 然后一两分钟后,它说: checking for working terminal libraries... Cannot f
如何告诉 automake 使用名称中包含空格的文件?这似乎不起作用。 bin_PROGRAMS = prog prog_SOURCES = "a file.c" "another file.c" 最
所以我一直在使用 Autotools 尝试学习工具链,以便我可以在我的一些跨平台项目中使用它。我已经很好地掌握了最基本的知识,但我在这里遇到了一个问题。 在我的源代码树中,我有一个“data”文件夹,
当我使用“make”运行我的自动工具生成的 Makefile 时,它会在当前目录中生成文件。我希望它不要“污染”我的目录,而是将程序移动到“bin/”(因为源在“src/”中) 这可以通过自动工具
我是一名优秀的程序员,十分优秀!