Command line arguments to make for working in Linux and Windows
我已经通过了链接从命令行传递附加变量。
我有一个使用makefiles在Linux和Windows上编译的项目。在Windows中使用gcc,而在Linux中使用
例如,在Windows中,它应该具有如下内容:
1 2 | CC= gcc CFLAGS= -c -D COMPILE_FOR_WINDOWS |
Linux:
1 2 | CC = armv7-linux-gcc CFLAGS = -c -D COMPILE_FOR_LINUX |
这些预处理器定义了针对Windows的compile_和针对Linux的compile_,它们存在于代码库中,无法更改。
另外,对于makeclean,它应该同时清理Windows和Linux。我不能假设构建这个系统的人安装了cygwin,所以不能使用
只有在使用GNU make或类似产品时,此答案才有效:
使用环境变量有条件地设置make变量。
为了使"clean"规则正常工作,您可能还必须为两个操作系统的文件扩展名中的任何差异创建make变量。
幼稚的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 |
也许您可以使用Ant(带有build.xml文件)来构建项目。否则,在makefile中,您需要检查系统并设置一些条件来检查您是在UNIX环境还是在Windows环境中创建项目。