我有一个
test.c
文件,基本内容:
#include <stdio.h>
int main(void) {
printf("hi\n");
return 0;
}
我正在尝试创建一个 makefile 来标识操作系统并将代码编译到名为
bin
的目录中。这是生成文件:
CCunix=clang
CCwin = icx
name=test
files=$(name).c
OSFLAG :=
ifeq ($(OS),Windows_NT)
OSFLAG+=win
else
OSFLAG+=unix
endif
all:
ifeq ($(OSFLAG), win)
ifeq ($(CCwin), icx)
@"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" intel64
endif
@if not exist "bin\" mkdir bin
@$(CCwin) $(files) -o bin\$(name)
else
@mkdir -p bin
@$(CCunix) $(files) -o bin/$(name)
endif
clean_bin:
ifeq ($(OSFLAG), win)
@del /Q bin
else
@rm -r bin
endif
当我在
make
上运行windows
时,出现以下错误:
process_begin: CreateProcess(NULL, icx test.c -o bin\test, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [makefile:18: all] Error 2
我不知道为什么它停在第 19 行。可能有什么问题吗?
提前致谢。
错误信息“make (e=2): The system cannot find the file specified”说明make找不到icx编译器。
此错误的一个可能原因是 icx 编译器未安装或不在 Windows 机器上的系统 PATH 中。您可以通过从 makefile 外部的命令行运行 icx 来验证这一点。
如果未安装 icx,您可以尝试安装它或使用系统上安装的不同编译器,例如 Microsoft 的 Visual C++ 编译器 (cl.exe)。
如果安装了 icx 但不在系统 PATH 中,您可以将其目录添加到 PATH 环境变量或修改 makefile 以使用 icx 编译器可执行文件的完整路径。
如果您决定使用不同的编译器,您还需要修改 makefile 以使用适合该编译器的编译器名称和编译器选项。
请注意,makefile 假定英特尔 C++ 编译器的 setvars.bat 脚本安装在默认位置。如果它安装在不同的位置,您需要修改 makefile 以使用正确的路径。