c – g:使用ZIP文件作为输入

前端之家收集整理的这篇文章主要介绍了c – g:使用ZIP文件作为输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的Boost图书馆在我们身边.它由大量文件组成,永远不会改变,只有一小部分被使用.如果我们正在更改版本,我们将交换整个boost目录.目前,我们的SVN中有Boost源,按文件格式,使得结帐操作非常缓慢,特别是在 Windows上.

如果有一个符号/插件解决ZIP文件中的C文件,这将是很好的,像:

// @ZIPFS ASSIGN 'boost' 'boost.zip/boost'
#include <boost/smart_ptr/shared_ptr.hpp>

是否有任何支持编译器钩在g?对ZIP支持有什么努力吗?其他想法?

解决方法

我假设在构建软件的过程中涉及到make或类似的构建系统.我将zip文件放在存储库中,并将一个规则添加到Makefile中以在实际构建开始之前解压缩.

例如,假设你的zip文件在源代码树中是“external / boost.zip”,它将被提取到“external / boost”,并且它的大小包含一个文件“boost_version.h”.

# external/Makefile
unpack_boost: boost/boost_version.h

boost/boost_version.h: boost.zip
    unzip $<

我不知道解压缩调用的确切语法,请询问您的手册页.

然后在其他Makefile中,您可以让源文件依赖于unpack_boost目标,以便在编译源文件之前进行解压缩Boost.

# src/Makefile (excerpt)
unpack_boost:
    make -C ../external unpack_boost

source_file.cpp: unpack_boost

如果您使用的是Makefile生成器(或完全不同的构建系统),请查看这些程序的文档,了解如何创建自定义目标unpack_boost.例如,在CMake中,可以使用add_custom_command指令.

精细的打印:Makefile工作不是必须的boost / boost_version.h文件.您可以将unzip命令放入unpack_boost目标中,但是目标将有效地成为假的,即:它将在每次构建期间执行.其中的文件(当然,您需要由zip存档中实际存在的文件替换)确保只有在必要时才能运行解压缩.

猜你在找的C&C++相关文章