如何生成可在AIX,Linux和SunOS上運行的makefile,並且能夠爲每個環境提供不同的編譯器選項?AIX Makefiles中的條件部分
我有機會獲得它描述了OS的環境變量,但AIX make實用不喜歡IFEQ,所以我不能做這樣的事情:
ifeq($(OS), AIX)
CFLAGS = $(CFLAGS) <IBM compiler options>
endif
如何生成可在AIX,Linux和SunOS上運行的makefile,並且能夠爲每個環境提供不同的編譯器選項?AIX Makefiles中的條件部分
我有機會獲得它描述了OS的環境變量,但AIX make實用不喜歡IFEQ,所以我不能做這樣的事情:
ifeq($(OS), AIX)
CFLAGS = $(CFLAGS) <IBM compiler options>
endif
您可以使用這樣的結構:
CFLAGS_AIX =
AIX標誌
CFLAGS_Linux =
Linux的標誌
CFLAGS_SunOS =
SunOS的標誌
CFLAGS = $(CFLAGS_$(OS))
一個Makefile的便攜性是不能直接與操作系統相關,但涉及在有問題的平臺上實現make。 (所以有一個間接的關係,因爲make的實現可能會被操作系統猜到(但不準確)。)總的來說,這是一個很難解決的問題,因此提出了許多解決方案。你可能想看看automake,它會爲你生成便攜式的makefile。然而,automake解決設置不同unixen標誌問題的解決方案可能不會吸引你,因爲解決方案(基本上)是「不這樣做」。不是基於平臺設置選項,其理念是根據主機或用戶在配置時提供的功能來確定需要哪些標誌。針對基於平臺的標誌分配問題的一個方便的基於autoconf/automake的解決方案是爲每個平臺分配一個獨立的文件,該文件在配置時分配CFLAGS,並在用戶的SITE環境變量中指定該文件運行配置。您可以根據平臺在用戶的登錄腳本中分配CONFIG _ SITE。 (即,將問題從configure/make推入到登錄設置中)。這使得構建軟件的用戶對賦值透明。 (透明但很容易被覆蓋)。
CFLAGS = $(CFLAGS _ $(OS))在我的AIX系統上。 – 2010-10-28 19:14:13
@Leonardo:是的,更正了。 – mark4o 2010-10-28 19:50:38