gpt4 book ai didi

windows - 用于在 Linux 和 Windows 中工作的命令行参数

转载 作者:可可西里 更新时间:2023-11-01 09:35:11 26 4
gpt4 key购买 nike

我已经通过链接 Passing additional variables from command line to make .

我有一个使用 makefile 在 Linux 和 Windows 上编译的项目。在 Windows 中它使用 gcc,而在 Linux 中它使用 gcc 的 ARM 版本,即 armv7-linux-gcc。我想使用一个命令行变量来告诉 makefile 根据 Windows 或 Linux 使用哪个编译器。

例如在 Windows 中它应该是这样的:

CC= gcc  
CFLAGS= -c -D COMPILE_FOR_WINDOWS

对于 Linux:

CC =  armv7-linux-gcc  
CFLAGS = -c -D COMPILE_FOR_LINUX

这些预处理器定义 COMPILE_FOR_WINDOWS 和 COMPILE_FOR_LINUX 存在于代码库中,无法更改。

此外,对于 make clean,它应该同时清理 Windows 和 Linux。我不能假设构建它的人会安装 Cygwin,所以不能使用 rm 删除文件。

最佳答案

此答案仅在您使用 GNU make 或类似工具时有效:

使用环境变量有条件地设置您的 make 变量。

为了使“干净”规则正常运行,您可能还必须为任一操作系统的文件扩展名中的任何差异创建一个 make 变量。

简单的例子:

ifeq ($(OS), Windows_NT)
CC=gcc
RM=del
EXE=.exe
CFLAGS=-c -DCOMPILE_FOR_WINDOWS
else
CC=armv7-linux-gcc
RM=rm
EXE=
CFLAGS=-c -DCOMPILE_FOR_LINUX
endif

PROG=thing$(EXE)

.PHONY: all
all: $(PROG)
$(CC) $(CFLAGS) -o $(PROG) main.c

.PHONY: clean
clean:
-$(RM) $(PROG) *.o

关于windows - 用于在 Linux 和 Windows 中工作的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10672722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com