事情经过是这样的,博主在一个项目中需要使用交叉编译链进行项目编译,但是在CMake中有一个自定义的编译选项,在vscode中配置task任务后,编译发现终端报静态库.a
文件格式错误,如下图所示:
但是如果在CMakeLists.txt中直接写set(DEBUG_WITH_ALGO, ON)
,编译就没有问题。
task任务编写情况如下:
后来经我东哥提醒,发现在配置task任务时,args
选项需要用,
隔开,如果使用空格
,虽然终端打印出来的task任务命令是对的,但是实际上参数是确实的,这就导致博主指定的交叉编译链被忽略掉,使用了系统默认编译链,而.a
文件是由交叉编译链编译得到的,因此导致项目跟静态库不匹配,从而报文件格式错误。
正确的task任务配置如下所示:
总结
task.json
中的args
字段不能包含空格,不同参数必须分开写。