背景
对于某些情况需要将编译代码路径中的头文件全部提供到某个目录。如何通过make install将这些文件放到指定位置?可以添加到Makefile的install阶段。在install的tag后面添加一个目标tag进行拷贝。
代码
install: xxx my_copy_head_tag
...
my_copy_head_tag:
@mkdir -p /path/to/copyheaderdir/
@find $(CWD) -type f -name "*.h" | while read -r file; do \
relative_path=$$(realpath --relative-to=$(CWD) $$file); \
dst="/path/to/copyheaderdir/$$(dirname $$relative_path)"; \
mkdir -p $$dst; \
cp $$file $$dst; \
done
说明:
这里是先创建目标目录,然后将所有的.h文件找到后,获取到.h文件的相对于当前命令的目录,然后将文件拷贝到目标目录再加上相对路径的目录中。
makefile调用了shell命令realpath,realpath指定一个需要对比的路径,以及文件绝对路径,然后获取相对路径。
使用方式
可以直接make install
的时候顺便就拷贝了
另外还可以直接make my_copy_head_tag
进行拷贝