什么是C++/autoconf相当于requirements.txt,用于记录库需求? 我有一个C++库,它使用了我已经保存了15年的AutoCONF。我现在让它与CI一起运行,并发现我需要更好地记录它的需求。在python程序中,我使用一个名为requirements.txt的文件来实现这一点,setuptools在打包过程中使用该文件,我也可以在CI系统中使用该文件。什么是正确的方式来记录这在C++的自动工具包?

什么是C++/autoconf相当于requirements.txt,用于记录库需求? 我有一个C++库,它使用了我已经保存了15年的AutoCONF。我现在让它与CI一起运行,并发现我需要更好地记录它的需求。在python程序中,我使用一个名为requirements.txt的文件来实现这一点,setuptools在打包过程中使用该文件,我也可以在CI系统中使用该文件。什么是正确的方式来记录这在C++的自动工具包?,c++,autotools,C++,Autotools,这是一个问题,技术作家想知道:什么包或依赖性有我们的产品。 C/C++中有两种依赖关系,与Python依赖关系的单数列表不同(我不是说在某些Python包或类似类型中发现的特定于测试的依赖关系) 有: 标题包含依赖项 库依赖 标题包含依赖项 有一个C/C++编译器选项,列出所有非系统包含文件: gcc-c-MMD 对于所有包含文件: gcc-c-MD 通过这些包含文件的列表,您可以找到提供它的包,例如,在Debian中: dpkg查询-S 依赖库 保护用于特定平台/发行版的库的完整列表

这是一个问题,技术作家想知道:什么包或依赖性有我们的产品。 C/C++中有两种依赖关系,与Python依赖关系的单数列表不同(我不是说在某些Python包或类似类型中发现的特定于测试的依赖关系)

有:

  • 标题包含依赖项
  • 库依赖
标题包含依赖项 有一个C/C++编译器选项,列出所有非系统包含文件:

gcc-c-MMD
对于所有包含文件:

gcc-c-MD
通过这些包含文件的列表,您可以找到提供它的包,例如,在Debian中:

dpkg查询-S
依赖库 保护用于特定平台/发行版的库的完整列表的最佳方法是使用
ldd
提取程序启动和运行前所需的外部目标代码列表

#/bin/bash
#列出给定可执行文件所依赖的Debian包
二进制文件=$1
LIB_LIST=$(ldd$1 | gawk'{print$1}'| tr'\n''))
对于$LIB_列表中的此_LIB;做
dpkg查询-S$THIS_LIB
完成
/bin/ls
的输出结果为您提供了可执行文件所依赖的包的多平台列表:

~/bin/dpkg-dependency-by-executable.sh /bin/ls
dpkg-query: no path found matching pattern *linux-vdso.so.1*
libselinux1:amd64: /lib/x86_64-linux-gnu/libselinux.so.1
libc6-x32: /libx32/libc.so.6
libc6:amd64: /lib/x86_64-linux-gnu/libc.so.6
libc6-i386: /lib32/libc.so.6
libpcre3:amd64: /lib/x86_64-linux-gnu/libpcre.so.3
libpcre3:amd64: /lib/x86_64-linux-gnu/libpcre.so.3.13.3
libc6-i386: /lib32/libdl.so.2
libc6-x32: /libx32/libdl.so.2
libc6:amd64: /lib/x86_64-linux-gnu/libdl.so.2
libc6:amd64: /lib64/ld-linux-x86-64.so.2
libc6-i386: /lib32/libpthread.so.0
libc6-x32: /libx32/libpthread.so.0
libc6:amd64: /lib/x86_64-linux-gnu/libpthread.so.0
root#

通过这些列表,您可以确定您的
autotools
已经正确地对它们进行了依赖性测试(通常没有与系统相关的测试)。

requirements.txt
用于在python中安装所需的包,以便构建/运行代码。对于C++,我们可以做到这一点,比如“代码> Git克隆——递归< /代码>?我不能在AutoCONF文件中放一个<代码> Git克隆< /C>。我知道Python使用了
requirements.txt
。我想知道如何为C++包编写文档。有几个C++包管理器。这是一个很好的例子,找到了一些有用的源,C++和C工具也没有特定的惯例来描述你所描述的文档。当然不是任何机器可操作的东西。我想我通常希望在源代码发行版中找到一个自述文件,其中可能包括许多其他细节中的任何第三方需求。正如其他评论所指出的,这些类型需求的形式化通常是与包管理系统相关的一个功能,而Autotools则不是。这是一般意义上的有用建议,但与实际提出的问题无关。特别是,它对OP参与CI系统的兴趣没有(直接)帮助。在这些评论的上下文中,这个问题可能被解释为询问一旦收集到依赖信息,您会如何处理它。哎哟。我已经描述了CD系统的持续开发过程??您已经描述了发现程序依赖关系的机制。OP要求提供一种标准化或广泛支持的传统机制,用于以机器可操作的形式表示这些功能,例如CI系统可以读取和使用。除了在键入函数调用时具有出色自动标头功能的IDE之外,我们还需要将该功能提取到一个独立的工具中。