我想制作一个Makefile,可以在Linux和Solaris中编译。 我知道如何单独进行,但如何将两者结合起来并能够检测出我使用的是哪种操作系统? 我试图只为一个简单的C文件执行此操作 - 但它是更改的编译器的名称。
答案 0 :(得分:5)
GNU Autoconf旨在解决这个问题:
Autoconf是一个可扩展的包 生成shell脚本的M4宏 自动配置软件 源代码包。这些脚本 可以适应多种包装 没有手动的类UNIX系统 用户干预。 Autoconf创建了一个 包的配置脚本 从列出的模板文件 操作系统的功能 包可以使用,以M4的形式 宏调用。
我自己使用Autoconf进行了几个简单的项目。您可以查看源代码,了解如何使用Autoconf进行简单的特征检测:
请注意,Autoconf的目的不是检测您的操作系统。相反,它旨在检测操作系统上可能存在或不存在的功能,设置等。
想一想这个问题“在这个平台上调用的C编译器是什么?”不是“我在Linux或Solaris上运行吗?”
答案 1 :(得分:0)
我相信大多数人会说使用一些花哨的autotools的东西。他们是对的。
但是......你可以在你的makefile中添加如下内容。
OS = `uname -s`
ifeq ($(OS),Linux)
...
endif
ifeq ($(OS),Sun)
...
endif