Sublime Text 3 intel oneAPI Fortran 构建系统
Sublime Text 3 intel oneAPI Fortran build system
有没有人知道如何为 oneAPI Fortran 编译器编写构建系统?
以前,我使用的是 Parallel Studio XE ifort,我设法使用解决方案 here:
让它工作
{
"cmd": ["cmd", "/e:on", "/v:on", "/k", "ipsxe-comp-vars intel64 vs2013 && ifort ${file}"],
"file_regex": "^.*\\([0-9A-Za-z_]+\.[A-Za-z0-9]+)\(([0-9]+)\):[ ]+error[ ]+#([0-9]+):[ ]+(.*)$",
"working_dir":"${file_path}",
"selector":"source.f ,source.for ,source.ftn ,source.f90 ,source.fpp ,source.i ,source.i90",
"encoding":"cp936",
"path":"C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.4.210\windows\bin;${path}",
"variants":
[
{
"name": "Run",
"cmd": ["cmd", "/e:on", "/v:on", "/c", "ipsxe-comp-vars intel64 vs2013 && ifort ${file} && ${file_base_name}"]
}
]
}
我尝试将路径更改为新路径,但它不起作用。我收到以下错误:
"ipsxe-comp-vars" is not recognized as an internal or external command,
program o executable.
我找到了答案。解释如下。在这里发布工作构建系统以供查看。
这应该是构建系统:
{
"cmd": ["cmd", "/e:on", "/v:on", "/S", "/k", "C:\\"Program Files (x86)\"\Intel\oneAPI\setvars.bat intel64 vs2022 && ifort ${file}"],
"file_regex": "^.*\\([0-9A-Za-z_]+\.[A-Za-z0-9]+)\(([0-9]+)\):[ ]+error[ ]+#([0-9]+):[ ]+(.*)$",
"working_dir":"${file_path}",
"selector":"source.f ,source.for ,source.ftn ,source.f90 ,source.fpp ,source.i ,source.i90",
"encoding":"cp936",
"path":"C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64;${path}",
"variants":
[
{
"name": "Run",
"cmd": ["cmd", "/e:on", "/v:on", "/s", "/c", "C:\\"Program Files (x86)\"\Intel\oneAPI\setvars.bat intel64 vs2022 && ifort ${file} && ${file_base_name}"]
}
]
}
为什么会出现这个问题
对于初学者来说,ipsxe-comp-vars 是一个批处理文件,它在 运行 时设置执行英特尔编译器所需的环境变量。此文件特定于英特尔 Parallel Studio XE (IPSXE)。现在,在安装 IPSXE 时,它会将这个批处理文件添加到您的 PATH,这意味着您可以从任何目录简单地调用 ipsxe-comp-vars 来设置所需的环境变量。
Intel oneAPI 有一个不同名称的文件,它本质上做同样的事情,称为 setvars.bat。此文件存储在:
C:\Program Files (x86)\Intel\oneAPI\setvars.bat
因此,起初似乎调用 ipsxe-comp-vars 失败是因为文件的命名不同。但是,与 IPSXE 对 ipsxe-comp-vars 所做的不同,oneAPI 不会将 setvars 添加到 PATH,因此您不能简单地调用 setvars,您必须使用完整路径。
如何解决
使用 IPSXE,您可以调用 ipsxe-comp-vars,它会 运行 设置环境变量的批处理文件,但是使用 oneAPI 要么将文件添加到 PATH(不推荐,因为它有一个通用名称),或者调用时使用完整路径(同上):
C:\Program Files (x86)\Intel\oneAPI\setvars.bat
现在,因为您必须将它插入构建系统配置中,所以您需要正确格式化它。 ST 运行s cmd.exe 中的命令,因此您必须使用正确的选项并以 cmd 可以理解的方式格式化路径:
选项(您可以通过打开 cmd 提示符、键入 cmd /?
并点击 return 来获得完整列表):
- /e:on Enables command extensions
- /v:on Enables extension of environment variables
- /s Modifies how the string following a /c or /k is read
- /k Executes the string command and continues
setvars.bat 文件的路径格式必须如下:
C:\\"Program Files (x86)\"\Intel\oneAPI\setvars.bat
- 需要转义每个 \ 分隔目录(也使用 \)
- 需要用双引号括起来,因为它包含一个空格。每个双引号也需要转义(再次使用 )
以下选项特定于 setvars.bat 文件:
- intel64 specifies 64-bit configuration
- vs2022 specifies Visual Studio 2022 as the developer cmd or
powershell version to use
最后,使用 ifort ${file}
对当前文件调用 ifort
此外,构建系统完成了变体“运行”。此变体 运行 是编译后的输出文件(&& ${file_base_name}
),并将在 Sublime Text 3 控制台中显示输出(不接受输入,如果有人知道如何设置 sublimeREPL Fortran 请告诉我)
有没有人知道如何为 oneAPI Fortran 编译器编写构建系统? 以前,我使用的是 Parallel Studio XE ifort,我设法使用解决方案 here:
让它工作{
"cmd": ["cmd", "/e:on", "/v:on", "/k", "ipsxe-comp-vars intel64 vs2013 && ifort ${file}"],
"file_regex": "^.*\\([0-9A-Za-z_]+\.[A-Za-z0-9]+)\(([0-9]+)\):[ ]+error[ ]+#([0-9]+):[ ]+(.*)$",
"working_dir":"${file_path}",
"selector":"source.f ,source.for ,source.ftn ,source.f90 ,source.fpp ,source.i ,source.i90",
"encoding":"cp936",
"path":"C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.4.210\windows\bin;${path}",
"variants":
[
{
"name": "Run",
"cmd": ["cmd", "/e:on", "/v:on", "/c", "ipsxe-comp-vars intel64 vs2013 && ifort ${file} && ${file_base_name}"]
}
]
}
我尝试将路径更改为新路径,但它不起作用。我收到以下错误:
"ipsxe-comp-vars" is not recognized as an internal or external command,
program o executable.
我找到了答案。解释如下。在这里发布工作构建系统以供查看。
这应该是构建系统:
{
"cmd": ["cmd", "/e:on", "/v:on", "/S", "/k", "C:\\"Program Files (x86)\"\Intel\oneAPI\setvars.bat intel64 vs2022 && ifort ${file}"],
"file_regex": "^.*\\([0-9A-Za-z_]+\.[A-Za-z0-9]+)\(([0-9]+)\):[ ]+error[ ]+#([0-9]+):[ ]+(.*)$",
"working_dir":"${file_path}",
"selector":"source.f ,source.for ,source.ftn ,source.f90 ,source.fpp ,source.i ,source.i90",
"encoding":"cp936",
"path":"C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64;${path}",
"variants":
[
{
"name": "Run",
"cmd": ["cmd", "/e:on", "/v:on", "/s", "/c", "C:\\"Program Files (x86)\"\Intel\oneAPI\setvars.bat intel64 vs2022 && ifort ${file} && ${file_base_name}"]
}
]
}
为什么会出现这个问题
对于初学者来说,ipsxe-comp-vars 是一个批处理文件,它在 运行 时设置执行英特尔编译器所需的环境变量。此文件特定于英特尔 Parallel Studio XE (IPSXE)。现在,在安装 IPSXE 时,它会将这个批处理文件添加到您的 PATH,这意味着您可以从任何目录简单地调用 ipsxe-comp-vars 来设置所需的环境变量。
Intel oneAPI 有一个不同名称的文件,它本质上做同样的事情,称为 setvars.bat。此文件存储在:
C:\Program Files (x86)\Intel\oneAPI\setvars.bat
因此,起初似乎调用 ipsxe-comp-vars 失败是因为文件的命名不同。但是,与 IPSXE 对 ipsxe-comp-vars 所做的不同,oneAPI 不会将 setvars 添加到 PATH,因此您不能简单地调用 setvars,您必须使用完整路径。
如何解决
使用 IPSXE,您可以调用 ipsxe-comp-vars,它会 运行 设置环境变量的批处理文件,但是使用 oneAPI 要么将文件添加到 PATH(不推荐,因为它有一个通用名称),或者调用时使用完整路径(同上):
C:\Program Files (x86)\Intel\oneAPI\setvars.bat
现在,因为您必须将它插入构建系统配置中,所以您需要正确格式化它。 ST 运行s cmd.exe 中的命令,因此您必须使用正确的选项并以 cmd 可以理解的方式格式化路径:
选项(您可以通过打开 cmd 提示符、键入 cmd /?
并点击 return 来获得完整列表):
- /e:on Enables command extensions
- /v:on Enables extension of environment variables
- /s Modifies how the string following a /c or /k is read
- /k Executes the string command and continues
setvars.bat 文件的路径格式必须如下:
C:\\"Program Files (x86)\"\Intel\oneAPI\setvars.bat
- 需要转义每个 \ 分隔目录(也使用 \)
- 需要用双引号括起来,因为它包含一个空格。每个双引号也需要转义(再次使用 )
以下选项特定于 setvars.bat 文件:
- intel64 specifies 64-bit configuration
- vs2022 specifies Visual Studio 2022 as the developer cmd or
powershell version to use
最后,使用 ifort ${file}
此外,构建系统完成了变体“运行”。此变体 运行 是编译后的输出文件(&& ${file_base_name}
),并将在 Sublime Text 3 控制台中显示输出(不接受输入,如果有人知道如何设置 sublimeREPL Fortran 请告诉我)