首页 > 解决方案 > 可以在适用于 Linux 和 Windows 的 Makefile 中创建符号链接吗?

问题描述

我有一个由任务组成的项目。每个任务都有三个子目录:输入、代码和输出。在代码目录中存在一个 Makefile,其中包含从代码和输入生成输出所需的配方。每个 Makefile 都使用 Unix 命令。

许多任务是相互关联的:一个任务的输出是另一个任务的输入。这些连接是通过 Unix 风格的符号链接(ln -s在 Makefile 中)完成的。

我希望能够将这个项目发布到任何操作系统(Windows、Mac、Linux)并让它运行。符号链接在 Mac 和 Linux 上运行良好,但在 Windows 上运行良好。我知道 Windows 10 有自己的符号链接语法 ( mklink)。

我可以想到一些潜在的解决方案,但我不确定它们是否可行,更不用说如何实现它们了。一种是让 Makefile 检测操作系统并相应地构建符号链接。另一种方法是让 Windows 用户将项目(例如 git clone)复制到类 Unix 文件系统(理想情况下为 WSL2,或 VM)并在那里运行 Makefile。根据我的经验,第二个比第一个更糟糕,因为与使用一个本地文件系统相比,编辑文件变得很痛苦。我在笔记本电脑上运行 Windows,因此易于编辑是我的首要任务。

总而言之,我认为这里有三个有序的问题:

  1. makefile 可以检测操作系统并制作正确的符号链接/它可以制作与操作系统无关的符号链接吗?
  2. 如果没有,有没有办法在 WSL2 的 Linux 文件系统中完成这一切?需要能够使用 Emacs 或 Atom 编辑文件并运行 Windows 可执行文件(否则我必须将 Stata、R、Matlab 和其他任何东西放在我的 WSL2 Ubuntu 发行版中)。我不是 VSCode 的忠实粉丝,所以我宁愿远离它,但我知道 Windows 在将其与 WSL2 集成方面取得了长足的进步。
  3. 如果这些都不起作用,像 CMake 这样的东西会有所帮助吗,还是我应该切换到 Linux 并让 Windows 用户晾干?

标签: linuxwindowsmakefilesymlinkwindows-subsystem-for-linux

解决方案


推荐阅读