'功能检测'在Make中需要编译标志(Mac上的liconv)

时间:2012-11-30 11:55:27

标签: linker makefile conditional-compilation

Ubuntu内置了libiconv标准c库,LDFLAGS不需要它。 OS X没有内置,需要设置标志。

我目前的做法是在我的Makefile中使用ifeq在OS X上有条件地设置LDFLAG += -liconv

我想知道是否有更好的方法?我受到Web开发的特征检测思维的影响很大,希望我可以使用类似的方法来检测当前系统是否需要该标志。

1 个答案:

答案 0 :(得分:0)

对于手动编写的makefile,单独设置LDFLAGS和朋友的内容是可以接受的方式。如果只需要几个功能,这可能会更简单。

如果您想要一般性地检测该功能,一条路线就是使用makefile生成器,如 CMake Automake

最后一个选项是手动执行Automake执行的运行时检查。这是一个你编译的示例文件,链接其中一个选项,看看它是否有效。如果不尝试下一个等等。这样您就可以测试每个功能所需的标志。当项目为./configure时,Automake会执行此操作,但您可以在每次运行make时或在您的构建设置有效时执行此操作。