0

我正在使用 GNU Make 来构建一个多目录项目。我的问题是如何使用单个 makefile 来构建多个设备?例如,我的应用程序必须在各种 X、Y、Z 移动设备上运行,每个移动设备都具有不同的属性,如屏幕尺寸、键盘类型、平台版本等。我必须通过make -f <makefilename> <targetname>。这里 targetname 可以是设备名称和型号,如 Samsung CorbyPlus,但我的 makefile 必须转到特定的 samsung 目录名并打开 .txt 文件左右,其中定义了所有上述属性。我必须在构建期间阅读所有这些,并通过一些宏/定义/标志访问我的代码。

谁能建议如何做到这一点?对我的要求更好的解决方案将不胜感激。

4

1 回答 1

1

I'd suggest using configuration makefiles. For example, suppose you have several device with its configurations:

config_device1.mk

OPTION1=yes
OPTION2=0

config_device2.mk

OPTION1=no
OPTION2=1

Then you can conditionally include them into base makefile using special parameter passed from command line (make -f makefile DEVICE=dev_type1) and use options from configuration files and process them:

makefile

ifeq ($(DEVICE),dev_type1)
include $(CONFIG_PATH)/config_device1.mk
endif

ifeq ($(DEVICE),dev_type2)
include $(CONFIG_PATH)/config_device1.mk
endif

ifeq ($(OPTION1),yes)
CFLAGS += -DBUILD_OPTION1     
endif

CFLAGS += -DBUILD_OPTION2=$(OPTION2)

BTW, for a long perspective (if you don't have time constraints now) it's better to use some of existing build system, read its manual and stick to its methodology.

于 2010-08-17T06:28:33.793 回答