Gcc 如何在makefile中创建命名软链接?
我正在探索改进代码模块集成的方法,并对使用命名软链接而不是包含目录感兴趣,主要是因为这允许集成者将任何导入模块的目录名设置为保证不会与构建的模块或其导入的模块相冲突的名称,以及防止导入的模块意外地相互拦截。但是,我不确定如何在makefile中真正实现这一点 以下是目录层次结构和预期链接:Gcc 如何在makefile中创建命名软链接?,gcc,makefile,gnu,Gcc,Makefile,Gnu,我正在探索改进代码模块集成的方法,并对使用命名软链接而不是包含目录感兴趣,主要是因为这允许集成者将任何导入模块的目录名设置为保证不会与构建的模块或其导入的模块相冲突的名称,以及防止导入的模块意外地相互拦截。但是,我不确定如何在makefile中真正实现这一点 以下是目录层次结构和预期链接: +---proj1 | +---inc | | head.h | | | \---src | code.c | +---proj2 | +---inc |
+---proj1
| +---inc
| | head.h
| |
| \---src
| code.c
|
+---proj2
| +---inc
| | head.h
| |
| \---src
| code.c
|
\---proj3
| Makefile
|
\---src
| code.c
| head.h
|
+---A --> ../../proj1/inc
| head.h
|
\---B --> ../../proj2/inc
head.h
在proj3/src/code.c中,我会:
#include "head.h"
#include "A/head.h"
#include "B/head.h"
我想在编译源代码之前,我需要为每个{directory,name}元组运行ln-s
,将链接放在与正在编译的源代码相同的目录中。解析INC=dir1 dir2
非常简单,但是如何为这样一个列表中的每个对/元组表示和运行ln-s
?或者,如果每个元素(ln-s dir1 localname
)中都有一个完整的命令,如何执行所有这些命令
其他建议将不胜感激。类似的建议
linkdirs := A B
dir_A := ../proj1/src
dir_B := ../proj2/src
.PHONY: all symlinks
all: symlinks hello
symlinks:
$(eval $(patsubst %,ln -fs $$(dir_%) % &&,$(linkdirs)) true
你使用GNU make吗?你能具体化一点,到底应该创建什么符号链接吗?@uzsolt是的,添加了标记。@tripleee完成。未测试,如果有拼写错误,请ping etcI目前没有可用的构建环境,但整体概念看起来合法。