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

Makefile GNU Make是否有办法使用默认程序打开文件?,makefile,gnu-make,Makefile,Gnu Make,每当我希望make命令显示一个文件时,我都会遇到这个问题,该文件是使用操作系统的默认应用程序打开某个特定配方后生成的 例如。。。我主要在Linux中工作。我可以使用make文档生成和查看代码文档,其中我已将以下内容放在我的make文件中: docs: cd ${DIR_WORKING}/doc/; doxygen Doxyfile xdg-open ${DIR_WORKING}/doc/html/index.html & 我想在Windows中使用make docs

每当我希望make命令显示一个文件时,我都会遇到这个问题,该文件是使用操作系统的默认应用程序打开某个特定配方后生成的

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

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用于我的代码,希望有一个解决方案不依赖于这个方向。

< P>你可以考虑做OS检测,在你的Mag文件中根据OS.< /P>初始化打开变量。
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检测,在你的Mag文件中根据OS.< /P>初始化打开变量。
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 &
我看了下面的答案,从中得到了一些启发


从Make 4.0开始,您可以使用变量Make_HOST,链接的答案都早于此。@user657267捕捉正确;不过,我认为流行的windows unix util捆绑包仍然附带make 3.8。是的,发行版需要一些时间才能赶上。@jacob谢谢@user657267很高兴了解MAKE 4.0中的MAKE_HOST,以供将来参考。从MAKE 4.0开始,您可以使用变量MAKE_HOST,链接的答案都早于此。@user657267很好理解;不过,我认为流行的windows unix util捆绑包仍然附带make 3.8。是的,发行版需要一些时间才能赶上。@jacob谢谢@user657267很高兴了解MAKE 4.0中的MAKE_主机,以供将来参考。