我的makefile包含以下代码。
ddd :
@mkdir -p /full/path_new/to/new_dir
@ln -fs /full/path_old/to/old_dir/private /full/path_new/to/new_dir/private
Linux ln命令在目录taget和parent中创建链接。这意味着我有:
/full/path_new/to/new_dir:
private -> /full/path_old/to/old_dir/private
但也有旧的链接
/full/path_old/to/old_dir/private
private -> /full/path_old/to/old_dir/private
这导致我有类似
的东西/full/path_old/to/old_dir/private/private/private/private (...) endless
我应该如何使用ln命令只在new_dir中建立链接?
答案 0 :(得分:1)
您需要在创建之前删除现有链接:
ddd :
@mkdir -p /full/path_new/to/new_dir
@rm -f /full/path_new/to/new_dir/private
@ln -fs /full/path_old/to/old_dir/private /full/path_new/to/new_dir/private
答案 1 :(得分:0)
假设一个干净的平板,执行此操作的正确方法是创建一个目标,该目标知道它正在创建哪个依赖项,并且如果它已存在则避免创建它。
ddd: /full/path_new/to/new_dir/private
/full/path_new/to/new_dir/private:
mkdir -p /full/path_new/to/new_dir
ln -s /full/path/to/old_dir/private /full/path_new/to/new_dir