2009-08-25 44 views
3

如何生成可在AIX,Linux和SunOS上運行的makefile,並且能夠爲每個環境提供不同的編譯器選項?AIX Makefiles中的條件部分

我有機會獲得它描述了OS的環境變量,但AIX make實用不喜歡IFEQ,所以我不能做這樣的事情:

ifeq($(OS), AIX) 
    CFLAGS = $(CFLAGS) <IBM compiler options> 
endif 

回答

6

您可以使用這樣的結構:

CFLAGS_AIX =AIX標誌
CFLAGS_Linux =Linux的標誌
CFLAGS_SunOS =SunOS的標誌
CFLAGS = $(CFLAGS_$(OS))

+0

CFLAGS = $(CFLAGS _ $(OS))在我的AIX系統上。 – 2010-10-28 19:14:13

+0

@Leonardo:是的,更正了。 – mark4o 2010-10-28 19:50:38

1

一個Makefile的便攜性是不能直接與操作系統相關,但涉及在有問題的平臺上實現make。 (所以有一個間接的關係,因爲make的實現可能會被操作系統猜到(但不準確)。)總的來說,這是一個很難解決的問題,因此提出了許多解決方案。你可能想看看automake,它會爲你生成便攜式的makefile。然而,automake解決設置不同unixen標誌問題的解決方案可能不會吸引你,因爲解決方案(基本上)是「不這樣做」。不是基於平臺設置選項,其理念是根據主機或用戶在配置時提供的功能來確定需要哪些標誌。針對基於平臺的標誌分配問題的一個方便的基於autoconf/automake的解決方案是爲每個平臺分配一個獨立的文件,該文件在配置時分配CFLAGS,並在用戶的SITE環境變量中指定該文件運行配置。您可以根據平臺在用戶的登錄腳本中分配CONFIG _ SITE。 (即,將問題從configure/make推入到登錄設置中)。這使得構建軟件的用戶對賦值透明。 (透明但很容易被覆蓋)。

+0

我希望比autoconf的一個簡單的解決方案/ automake – frankster 2009-08-25 11:32:04

+0

您可以安裝一致的v在所有機器上使用make。 – 2009-08-25 11:45:08

+0

我只能控制一些機器 – frankster 2009-08-26 00:13:38