GNU Make是否有办法使用默认程序打开文件?

时间:2016-07-07 23:20:12

标签: makefile gnu-make

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

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

docs:
     cd ${DIR_WORKING}/doc/; doxygen Doxyfile
     xdg-open ${DIR_WORKING}/doc/html/index.html &

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

1 个答案:

答案 0 :(得分:3)

您可以考虑进行操作系统检测,并在Makefile中初始化OPEN变量,具体取决于操作系统。

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

在你的目标中:

docs:
     cd ${DIR_WORKING}/doc/; doxygen Doxyfile
     $(OPEN) ${DIR_WORKING}/doc/html/index.html &

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

OS detecting makefile

Open file from the command line on Windows