今日做了一个Linux下makefile移植到windows的任务,踩了不少坑,在此记录一下,希望帮到广大的网友们。

基本的makefile语句如下,由target、dependency还有命令组成。

target: dependency
    echo 'makefile'
    ......
    shell language more

回归主题,makefile本身设计为跨平台了,在Linux与windows上使用makefile并没有什么区别。但问题在于makefile所有的命令都要调用shell来执行的,每一行的命令(如上面的 echo 'makefile')  都会调用一个shell进程进行解释。注意是每一行。

既然命令的调用shell来执行的,那么makefile跨平台的移植重点就在 shell命令的移植了。所以,所有的shell命令都要注意,不然分分钟报错“命令语法不正确”,不要想当然以为命令不可能有错。(:这在Linux上执行得好好的,为什么要windows下就不行了呢?)

 

在此列举一些Linux的bash 与 windows的cmd命令不一样的地方,由于代码在公司,我只好凭借记忆,大家体谅下;

  1. mkdir 命令在Linux下是有 mkdir -p 选项的,但是在windows下的cmd就没有,执行 mkdir -p $(dir),cmd会帮你创建 -p目录。
  2. for 语句是有挺大区别的。
  3. 还有一个很重要的就是文件的分割符号,windows下是 \,Linux下的  /,如果这两个斜杠没有统一好,很容易出现目录或文件找不到的错误

 

总结

  1. 将所有bash命令改为windows的bat批处理命令,或者你可以在makefile中指定使用bash。
  2. 注意目录的分隔符,一个目录需要有同一的目录分隔符。

更多推荐

Linux与windows下makefile的不同之处