【问题标题】:How to create link to directory in makefile in Linux?如何在 Linux 的 makefile 中创建指向目录的链接?
【发布时间】:2015-06-12 14:39:55
【问题描述】:

我有包含以下代码的生成文件。

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 和父目录中创建链接。这意味着我有:

/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 中有链接?

【问题讨论】:

  • 顺便说一句,把@ 放在你所做的每一件事上都是疯狂的。使用make -s 运行或指定.SILENT: ddd

标签: linux makefile ln


【解决方案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

【讨论】:

    【解决方案2】:

    假设一个干净的状态,正确的方法是创建一个知道它正在创建哪个依赖项的目标,如果它已经存在则避免创建它。

    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
    

    【讨论】:

    • 你还是应该先删除,或者使用-f。如果符号链接存在但指向无效目录,则 make 会认为它不存在并运行 ln,这将失败。
    • 虽然在这种情况下它可能应该失败?
    • 可能,当然,但我很难想象一个会优先考虑失败的场景。
    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2019-06-17
    相关资源
    最近更新 更多