linux - 可以在适用于 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,因此易于编辑是我的首要任务。
总而言之,我认为这里有三个有序的问题:
- makefile 可以检测操作系统并制作正确的符号链接/它可以制作与操作系统无关的符号链接吗?
- 如果没有,有没有办法在 WSL2 的 Linux 文件系统中完成这一切?需要能够使用 Emacs 或 Atom 编辑文件并运行 Windows 可执行文件(否则我必须将 Stata、R、Matlab 和其他任何东西放在我的 WSL2 Ubuntu 发行版中)。我不是 VSCode 的忠实粉丝,所以我宁愿远离它,但我知道 Windows 在将其与 WSL2 集成方面取得了长足的进步。
- 如果这些都不起作用,像 CMake 这样的东西会有所帮助吗,还是我应该切换到 Linux 并让 Windows 用户晾干?
解决方案
推荐阅读
- python - 如何使用双循环跳过一些结果?
- java - 声纳 - 如何跳过新代码的条件覆盖
- r - 如何将观察数放在 gtsummary 回归表的底部?
- python - 有没有办法使用 bash 脚本运行 jupyter notebook 单元来检查代码单元是否没有给出任何错误?
- java - java - 如何在java中为executeUpdateNativeQuery()编写Junit测试用例
- javascript - php 生成的字符串未正确传递给 javascript 函数
- python - 如何在 python 中读取转储文件,然后列出其文件?
- python - 如何使数据库中的值成为可以调用的通用变量
- powerbi - 用于在客户 ID 级别(DAX、PowerBI)标记存在任何 1 个调查类型的条件列
- php - Angular/Laravel - 得到“没有模型 [App\Models\User] 的查询结果”错误