天道酬勤,学无止境

autotools

How to include Boost in GNU Autotools project?

问题 我的项目使用 GNU 自动工具( aclocal && autoconf && ./configure && make )编译。 我想使用 Boost,我希望其他人也能够编译它。 我应该将 Boost 放在我的项目目录中,还是依赖系统的 Boost? 我应该如何告诉 autotools 使用 Boost? 我用谷歌搜索并发现了许多声称这样做的 m4 文件 - 但我应该把这些 m4 文件放在哪里? 我可以在我的/usr/share/aclocal目录中存储一个,但这对想要使用./configure && make编译项目的其他人没有帮助。 回答1 您可以在项目的m4子目录中包含一个出色的 boost.m4 宏。 这些宏位于configure.ac中的AC_CONFIG_MACRO_DIR([m4])中。 添加ACLOCAL_AMFLAGS = -I m4 --install到顶层Makefile.am ,供automake使用。 这就是为什么它是一个如此好的宏: BOOST_REQUIRE([1.54],[ACTION-IF-NOT-FOUND]) 这将定义BOOST_CPPFLAGS ,您可以将其添加到CPPFLAGS中,在AC_SUBST中使用等。 对于单个 Boost 组件,可以指定调试构建、静态构建等。但是(通常)多线程、动态库是最好的,例如, BOOST

2022-05-06 08:10:25    分类:技术分享    c++   boost   makefile   autotools

make: disable parallel building in subdirectory for single target only

问题 我有一个相当大的由 autotools 驱动的项目,它位于一个目录树中,该目录树由许多带有子目录的目录组成。 它有一个执行大量自动化测试的目标check (在每个子目录以及主目录中)。 check目标是递归构建的。 并行构建和测试(通过-j选项进行)适用于大多数目录。 然而,有一个目录包含在并行执行时不起作用的测试(时序敏感性),但在串行运行时通过。 问题是:有没有办法强制 make 在这个子目录中串行构建check目标,同时并行构建其他所有内容? 回答1 添加到您的Makefile : .NOTPARALLEL: 在此处查看 GNU make 的文档。 回答2 check: ; $(MAKE) -j1 ...

2022-05-06 02:24:03    分类:技术分享    build   makefile   autotools

How to include Boost in GNU Autotools project?

My project compiles using GNU autotools (aclocal && autoconf && ./configure && make). I'd like to use Boost, and I'd like for other people to be able to compile it as well. Should I put Boost in my project's dir, or rely on the system's Boost? How should I tell autotools to use Boost? I've Googled and found many m4 files that claim to do this - but where should I put those m4 files? I can stash one in my /usr/share/aclocal dir, but that doesn't help someone else who wants to compile the project using ./configure && make.

2022-05-03 03:40:37    分类:问答    c++   boost   makefile   autotools

How to pass extra custom ./configure autotools options to a Buildroot package?

问题 例如,我想将选项--enable-foo --enable-bar添加到./configure命令。 许多./configure选项可以通过BR2_间接设置,但是许多软件有太多的选项,以至于每个可能的./configure选项都有一个BR2_是不可行的。 是否有适用于所有自动工具包的通用机制? 回答1 我认为截至 2017.02 目前没有通用方法,因为package/pkg-autotools.mk包含: # Configure package for target define $(2)_CONFIGURE_CMDS (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \ $$(TARGET_CONFIGURE_OPTS) \ $$(TARGET_CONFIGURE_ARGS) \ $$($$(PKG)_CONF_ENV) \ CONFIG_SITE=/dev/null \ ./configure \ --target=$$(GNU_TARGET_NAME) \ --host=$$(GNU_TARGET_NAME) \ --build=$$(GNU_HOST_NAME) \ --prefix=/usr \ --exec-prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var

2022-05-02 13:22:25    分类:技术分享    autotools   configure   buildroot

Looking for a way to store versions in a binary compiled from git repo

问题 我正在寻找一些实现binary --version的技巧,这些技巧可以提供有关编译它的版本的良好信息。 该项目使用autotools构建系统,并存储在充当 SVN 前端的 git repo 中。 我想在二进制文件中包含的是: 编译时间作为基础的 SVN 提交最后一次 git 提交 ID 和时间如果可能的话,影响这个特定二进制文件的最后一次提交 回答1 您可能希望编写源代码以使用#defined 常量版本字符串。 然后,您可以使用-DMY_VERSION=...选项将其传递到您的构建中。 这也可以让你在代码中嵌入一个默认值,包裹在#ifndef中,以防万一! #ifndef MY_VERSION #define MY_VERSION 0.0.1-alpha #endif print_version() { printf("my product: %s\n", MY_VERSION); } 在构建过程方面处理此问题的一种好方法是制作中间构建产品,它只是一个像MY_VERSION = "..."这样的 makefile 片段。 通过让您使用已创建的版本文件分发项目,这再次增加了冗余,因此构建不必依赖于 SCM 的存在。 然后,您可以根据需要创建版本字符串,例如: echo -n 'MY_VERSION = "' > VERSION_FILE git describe >>

2022-04-30 00:16:08    分类:技术分享    svn   git   versioning   autotools

Makefile.am - Manual target prerequisite + addprefix?

问题 我有一个自动工具项目,其中部分源代码是从网上动态下载的(因为 IP 权利阻止直接重新分发)然后构建。 我有一个 Makefile.am 可以工作,但我对它的某些方面不满意。 这里是: INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) AM_CFLAGS = -fPIC -Wall ${SYMBOL_VISIBILITY} LIBVERSION=0:0:0 REFSRC_PATH=refsrc REFSRC_SRC=refsrc/dtx.c refsrc/globdefs.c refsrc/host.c refsrc/mathhalf.c refsrc/sp_enc.c refsrc/sp_rom.c refsrc/vad.c refsrc/err_conc.c refsrc/homing.c refsrc/mathdp31.c refsrc/sp_dec.c refsrc/sp_frm.c refsrc/sp_sfrm.c ${REFSRC_PATH}/.downloaded: ./fetch_sources.py "${REFSRC_PATH}" for f in `ls -1 "${REFSRC_PATH}"/*.{c,h}`; do \ sed -i -e"s/round/round

2022-04-29 14:46:03    分类:技术分享    makefile   autotools

make: disable parallel building in subdirectory for single target only

I have a rather huge autotools-powered project that lives in a directory tree consisting of a lot of directories with subdirectories. It's got a target check (in each subdirectory as well as the main directory) that executes a whole lot of automated tests. The check target is built recursively. Building as well as testing in parallel (via the -j option to make) works for most of the directories. There is however one directory that contains test that don't work when executed in parallel (timing sensitivity), but pass when run serially. The question is: Is there a way to force make to build the

2022-04-29 04:14:21    分类:问答    build   makefile   autotools

How to deploy a Find*.cmake file for an Autotools library in the correct place for Yocto?

I created a new layer over an existing Yocto git for my company project. In this layer I added a few external autotools based libraries. A few applications need to link against this libraries and the application projects are all cmake based. Taking one of this libraries (e.g. libcoap) I could easily find some FindCoAP.cmake to add to my library recipe. Now if I was running on PC, it would simply be a matter of placing this FindCoAP.cmake file in cmake's ${CMAKE_ROOT}/Modules dir, but how should I, from inside a bitbake recipe (do_install hook), proceed to make my Find*.cmake modules available

2022-04-28 05:51:10    分类:问答    cmake   yocto   autotools   bitbake   cmake-modules

Check framework example giving me error when running './configure'

问题 我正在构建检查框架示例“check_money”,但它没有在我的机器上构建。 错误是: configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.." 我尝试使用以下方法安装它: libtoolize --force aclocal autoheader automake --force-missing --add-missing autoconf ./configure 它仍然给我同样的错误。 所以,我将同一个目录复制到另一个目录并运行: autoreconf --install ./configure 它仍然给我同样的错误。 我不知道还能尝试什么。 我在 Mac OS X Mavericks (10.9) 自动配置 2.69 汽车制造 1.15 库工具 2.4.6 检查 0.9.14 回答1 我能够找出导致错误的原因 - 这是由于我使用 brew install 安装的 automake 和 libtools。 尽管已经安装了 autoconf,它安装了我需要的所有必要工具。 此外,我查看了 autoconf 创建的配置脚本,发现变量设置不正确,这就是为什么它给我 install-sh 错误,因为 $ac_dir 没有分配。 这就是我所做的。 我卸载了

2022-04-20 16:37:03    分类:技术分享    autotools   configure   autoconf   automake   check-framework