我已經通過鏈接 Passing additional variables from command line to make。使在Linux和Windows上工作的命令行參數
我有一個項目,它使用makefile在Linux和Windows上編譯。在Windows中,它使用gcc,而在Linux中它使用ARM版本gcc
,即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存在於代碼庫,並不能改變。
此外,爲了使清潔它應該清理Windows和Linux。我不能假設我這樣做的人會安裝Cygwin,因此不能使用rm
來刪除文件。
看這裏:http://stackoverflow.com/a/10608327/635608 – Mat
由於標準['make'](http://pubs.opengroup.org/onlinepubs/ 9699919799/utilities/make.html)中沒有任何條件機制,在makefile中作爲條件執行的任何操作都是特定於平臺的。如果你不打算強制'rm',大概你不會強制GNU'make',所以你讓自己變得非常困難。考慮爲這兩種配置分別建立makefile或makefile片段,所以你最終運行'make -f makefile.unix'或'make -f makefile.win64'或其他任何東西。儘量減少差異,但你需要知道Windows支持什麼。 –
只需要清楚,您使用的是哪個版本的Make? – Beta