目标的可选口味

时间:2012-10-22 14:34:41

标签: makefile

我想在编译时管理一些功能并设置特定的怪癖。因此,我必须能够修改必须编译的对象列表以生成最终目标,即编译命令和链接命令。到目前为止,我只需要使用两种程序,另一种(比如special)只添加了一些CXXFLAGS和一个目标文件:

specialclient: CXXFLAGS+=-DSPECIALBUILD
specialclient: LDFLAGS+=-lanotherlib
specialclient: libanotherlib client

其中client是正常目标。但现在我需要另一个可选功能(比如peculiar),事情开始变得复杂,因为我希望能够选择任何功能组合;但我不想指定peculiarclientspecialpeculiarclient的目标。我希望能够在命令行中指定每个功能,例如make [special] [peculiar] client

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

有些conditionals可以做到这一点:

ifdef SPECIAL
CXXFLAGS+=-DSPECIALBUILD
LDFLAGS+=-lanotherlib
client: libanotherlib
endif

ifdef PECULIAR
CXXFLAGS+=-DPECULIARBUILD
LDFLAGS+=-lyetanotherlib
client: libyetanotherlib
endif

现在您可以make clientmake client SPECIAL=1make client PECULIAR=yesmake client SPECIAL=TRUE PECULIAR=very或其他任何内容。