Linker Make中的“功能检测”所需编译标志(Mac上的liconv)

Linker Make中的“功能检测”所需编译标志(Mac上的liconv),linker,makefile,conditional-compilation,Linker,Makefile,Conditional Compilation,Ubuntu在其标准c库中内置了libiconv,并且不需要在LDFLAGS中使用它。OSX没有内置,需要设置标志 我目前的方法是在我的Makefile中使用ifeq在OSX上有条件地设置LDFLAG+=-liconv 我想知道是否有更好的方法?我深受web开发的功能检测思维的影响,希望我可以使用类似的方法来检测当前系统是否需要标记。对于手动编写的makefiles,单独设置LDFLAGS和friends的内容是一种可以接受的方法。如果只需要几个特性,这可能会更简单 如果你想一般性地检测这个特性

Ubuntu在其标准c库中内置了libiconv,并且不需要在LDFLAGS中使用它。OSX没有内置,需要设置标志

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


我想知道是否有更好的方法?我深受web开发的功能检测思维的影响,希望我可以使用类似的方法来检测当前系统是否需要标记。

对于手动编写的makefiles,单独设置LDFLAGS和friends的内容是一种可以接受的方法。如果只需要几个特性,这可能会更简单

如果你想一般性地检测这个特性,一个方法就是使用一个makefile生成器,比如CMake或Automake

最后一个选项是手动执行Automake执行的运行时检查。也就是说,要有一个编译的示例文件,链接其中一个选项,看看它是否有效。如果它不尝试下一个等等。这样,您就可以测试每个功能需要哪些标志。Automake会在项目配置时执行此操作,但您可以在每次运行make时或对构建设置有好处的任何时候执行此操作