在VSCODE中使用Intel Fortran编译器与makefile - ' make: ifort: Command



我是Fortran的新手,所以请原谅我。我有一个与英特尔ifort编译器一起运行的Fortran文件。我可以从命令行运行命令ifort -fpp -D IFORT discrete-kb-edits.F -lpgplot,它会将文件编译为a.out并工作。

现在,我试图在Ubuntu 20.04LTS上安装VSCode 1.68与Fortran支持。所以我配置了C/c++插件和Fortran断点插件。我还创建了一个Makefile,如下所示,并设置了一个tasks.json文件,以便从VSCode中运行make文件。

问题是,当VSCode运行make时,它没有找到ifort。我得到的输出看起来像这样:

> Executing task: make -j4 <
ifort -fpp -D IFORT discrete-kb-edits.F -lpgplot
make: ifort: Command not found
make: *** [Makefile:7: main.o] Error 127
The terminal process "/usr/bin/zsh '-c', 'make -j4'" failed to launch (exit code: 2).

不知何故,我能够从终端编译并从常规终端找到ifort,但是当从VSCode任务编译时,我得到一个关于ifort未找到的错误。

对Intel编译器的引用在.zshrc文件中。我在zsh配置中运行source ~/intel/oneapi/setvars.sh。所以当运行Vscode任务时,它在运行make之前不会加载终端配置。

是否有办法配置VSCode与ifort一起工作?

下面是make文件和任务配置,如果有帮助的话。如果还需要其他信息,请告诉我。
Makefile:
# variables
FC=ifort
FFLAGS= -fpp -D IFORT
# compiling
main.o: discrete-kb-edits.F
$(FC) $(FFLAGS) discrete-kb-edits.F -lpgplot
# cleanup
clean:
rm *.o a.out
# run
run:
make
./a.out

VSCode任务。json文件。

{
"version": "2.0.0",
"tasks": [
{
"label": "make",
"type": "shell",
"command": "make -j4",
"options": {
"cwd": "${workspaceRoot}"
}
}
]
}

我有同样的问题,并通过在tasks.json中查找setvars.h来解决它:

{
"version": "2.0.0",
"tasks": [
{
"label": "make",
"type": "shell",
"command": "bash -c 'source /opt/intel/oneapi/setvars.sh --force && make'",
"args": [],
"options": {
"cwd": "${workspaceRoot}"
}
}
]
}

--force只在可能发生的情况下才需要,该文件之前已经以某种方式获得了来源。

相关内容

  • 没有找到相关文章

最新更新