我应该使用make(在AIX上)创建我们应用程序的几个包
包的内容应根据一个环境变量而有所不同
有点像 - 如果环境变量 WITH_CPP 设置为“Y”那么应该构建应用程序的c ++部分并将其打包到安装包中。
如果环境变量 WITH_CPP 设置为“N”,则不应构建应用程序的c ++部分并将其打包到安装包中。
在makefile中处理这些条件的正确方法是什么?
答案 0 :(得分:1)
假设目标是installation-package
,并且包含程序包的c ++部分的方法是将c ++对象添加到安装包的对象列表中:
ifeq ($(WITH_CPP),Y)
INSTALLATION_OBJECTS += $(CPP_OBJECTS)
endif
或者,如果包含c ++部分的方法是通过构建单独的目标:
ifeq ($(WITH_CPP),Y)
installation-package: cpp-part
endif
这些是很好的方法,但它可能是一件坏事。如果makefile的行为依赖于环境变量,那么同一个makefile会为不同的用户提供不同的结果,这可能会令人头疼。
答案 1 :(得分:0)
另一种方法是让你的软件包的C ++部分依赖于某些虚假的目标:
cxx: cxx-part-1 cxx-part-2
.PHONY: cxx
然后,测试(但不依赖)正在构建的包的各种c ++部分的存在,并在它们存在时安装它们。这是可行的,但这是一个非常糟糕的主意,因为依赖图现在必然是不完整的。这也意味着最终用户必须知道运行make && make cxx && sudo make install
或类似的。只需使用autoconf
或automake
从构建步骤中拆分配置步骤。