美文网首页
Makefile随笔(一):shell 执行

Makefile随笔(一):shell 执行

作者: 赵海洋 | 来源:发表于2017-09-29 15:37 被阅读0次

    参考

    shell

    我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被 /bin/sh ——UNIX的标准Shell 解释执行的。除非你特别指定一个其它的Shell。Makefile中, # 是注释符,很像C/C++中的 // ,其后的本行字符都被注释。

    但windows上没有提到命令行是被谁解析,但在编译某个开源代码时使用只有使用作者打包的mingw才能编译成功,使用TDM-GCC-64、nuwen-mingw、MinGW.org的mingw都编译失败,最后发现是shell问题。

    把makefile精简成

    folder:
        echo "folder"
        mkdir build
        mkdir -p build/test 
        mkdir  build\test\test2 
    

    使用cmd来执行makemingw32-make都会提示mkdir -p build/test这一行命令语法不正确。,使用msysGit-bash(也是基于msys)以及作者提供的mingw中的make时就会创建文件夹成功。

    然后发现,作者提供的mingw\bin中有一个sh.exe,以及msysgit-bashbin目录下都有sh.exe,结合上面跟我一起写Makefile中的那一句,答案就应该是如果当前PATH中有sh.exe则会使用sh.exe来执行命令行,sh.exe能正确处理linux风格的路径。

    随带:sh.exe的参数格式是sh.exe --login -c "<command>",举例:sh.exe --login -c "echo hello"

    相关文章

      网友评论

          本文标题:Makefile随笔(一):shell 执行

          本文链接:https://www.haomeiwen.com/subject/itviextx.html