GNU Make 是否可以使用默认程序打开文件?

And*_*rew 1 makefile gnu-make

每当我想要一个 make 命令来显示一个文件时,我就会遇到这个问题,该文件是使用操作系统的默认应用程序打开该类型文件并遵循特定配方而产生的。

例如...我主要在 Linux 中工作。我可以生成并查看代码文档,并将make docs以下内容放入 Makefile 中:

docs:
     cd ${DIR_WORKING}/doc/; doxygen Doxyfile
     xdg-open ${DIR_WORKING}/doc/html/index.html &
Run Code Online (Sandbox Code Playgroud)

我想在Windows中使用make docs并具有相同的效果。我也可以使用用户分配的变量,例如 a$(OPEN)代替xdg-open。有没有一种方法可以使用 Windows 和 Linux 中的默认程序打开文件,而不需要用户修改 Makefile?我从未在我的代码中使用过 Autoconf,并希望有一个不依赖于这个方向的解决方案。

jac*_*cob 5

您可以考虑进行操作系统检测,并在 Makefile 中OPEN根据操作系统初始化变量。

ifeq ($(OS),Windows_NT)
    OPEN := start
else
    UNAME := $(shell uname -s)
    ifeq ($(UNAME),Linux)
        OPEN := xdg-open
    endif
    ...
Run Code Online (Sandbox Code Playgroud)

在你的目标中:

docs:
     cd ${DIR_WORKING}/doc/; doxygen Doxyfile
     $(OPEN) ${DIR_WORKING}/doc/html/index.html &
Run Code Online (Sandbox Code Playgroud)

我查看了以下答案以获得一些灵感。

操作系统检测 makefile

在 Windows 上从命令行打开文件