我也遇到了和你一样的问题。这问题的直接原因应该是make命令执行时SHELL设置的问题,但导致shell设置不对的原因应该还是Codelite设置的$(MAKE)参数的问题。
当你编译test这个project的时候,codelite会在workspace目录中生成Makefile,它里面执行的操作是
@贴吧用户_0000Q9P "test" && "$(MAKE)" -f "test.mk"
也就是进到test目录,然后再执行make命令,但这次用的make文件是test.mk,打开test.mk文件,第84行是这样的代码
@if not exist "..\build-$(ConfigurationName)\test" mkdir "..\build-$(ConfigurationName)\test"
最终执行的命令就是在上一级目录,也就是workspace的目录中建一个build-debug(注:debug是$(ConfigurationName)的值)\test目录,问题就出在这里,在不同的shell里,你这样建目录命令行有的可以执行,有的就会报错。而根据提示信息里的/usr/bin/sh,应该是第二次执行的make命令没有设置SHELL为cmd.exe,因为像上面的那个建目录的操作在windows的cmd里是可以执行成功的,但是在make文件默认的shell里,这样的建目录语法是会像你的提示那样报错。
具体怎么解决我还没研究,不知道codelite里能否设置MAKE那个变量,要是可以改的话,那就简单了,直接在变量中的make命行中加上SHELL=cmd.exe即可
当你编译test这个project的时候,codelite会在workspace目录中生成Makefile,它里面执行的操作是
@贴吧用户_0000Q9P "test" && "$(MAKE)" -f "test.mk"
也就是进到test目录,然后再执行make命令,但这次用的make文件是test.mk,打开test.mk文件,第84行是这样的代码
@if not exist "..\build-$(ConfigurationName)\test" mkdir "..\build-$(ConfigurationName)\test"
最终执行的命令就是在上一级目录,也就是workspace的目录中建一个build-debug(注:debug是$(ConfigurationName)的值)\test目录,问题就出在这里,在不同的shell里,你这样建目录命令行有的可以执行,有的就会报错。而根据提示信息里的/usr/bin/sh,应该是第二次执行的make命令没有设置SHELL为cmd.exe,因为像上面的那个建目录的操作在windows的cmd里是可以执行成功的,但是在make文件默认的shell里,这样的建目录语法是会像你的提示那样报错。
具体怎么解决我还没研究,不知道codelite里能否设置MAKE那个变量,要是可以改的话,那就简单了,直接在变量中的make命行中加上SHELL=cmd.exe即可