我正在使用GNU Make来构建一个多目录项目。
我的问题是如何使用单个makefile来构建多个设备?
例如我的应用程序必须运行在各种X,Y,Z移动设备上,每个设备都有不同的属性,如屏幕尺寸,键盘类型,平台版本等。我必须通过make -f <makefilename> <targetname>
。这里targetname可以是设备名称和型号,如三星CorbyPlus,但我的makefile必须转到三星的特定目录并打开.txt文件左右,其中定义了所有上述属性。我必须在构建期间阅读所有这些内容,并通过一些宏/ definitions / flags访问我的代码。
有人可以建议怎么做吗?对我的要求更好的解决方案将不胜感激。
答案 0 :(得分:1)
我建议使用配置makefile。例如,假设您有多个设备及其配置:
<强> config_device1.mk 强>
OPTION1=yes
OPTION2=0
<强> config_device2.mk 强>
OPTION1=no
OPTION2=1
然后,您可以使用从命令行传递的特殊参数( make -f makefile DEVICE = dev_type1 )有条件地将它们包含到基本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,从长远来看(如果你现在没有时间限制),最好使用一些现有的构建系统,阅读其手册并坚持其方法。