【发布时间】:2021-12-08 00:13:03
【问题描述】:
GNU 自动工具(autoconf 和 automake)的文档解释了如何测试所需库的存在。如果找到该库,autotools 会将其包含在 LIBS 中,以确保任何生成的目标文件都正确链接到它。如果找不到库,autotools 会生成错误消息。
对于库,可以使用以下宏:
AC_SEARCH_LIBS(function, libraries-list, action-if-found, action-if-not-found, extra-libraries)
例如
AC_SEARCH_LIBS([cos], [m], [], [AC_MSG_ERROR([unable to find the cos() function in the math library])])
你如何告诉 GNU autoconf / automake 对特定的 Apple 框架做同样的事情?
我可能可以使用以下方法来检查特定框架是否存在:
AC_CHECK_FILE(file, [action-if-found], [action-if-not-found])
但是我如何告诉 GNU 自动工具以确保我的目标文件链接到特定的 Apple 框架?
(我的程序(用 C 编写)需要链接到 Apple CoreServices 框架。
对于命令行上的手动构建,通常会告诉编译器在哪里找到框架并告诉它链接你的目标文件。
例如
clang -o MyProgram Source.c -F/System/Library/Frameworks -framework CoreServices -L/opt/local/lib -lmpeg2
在涉及 Apple 框架时可以使用 GNU 自动工具吗? 如果没有,有人可以推荐另一种旨在轻松生成用于 Apple Mac 软件开发的 makefile 的工具吗?
【问题讨论】:
-
我自己没有使用 Apple 系统的经验,但几年前当我厌倦了同时使用 Autotools 和 MSVC 解决方案时,我发现 CMake 是一个可靠的跨平台解决方案。
-
@DevSolar - 感谢您的建议。我一定会尝试cmake。但首先我想弄清楚 GNU Autotools。鉴于 MacOS 是专有操作系统,我怀疑 GNU 不太热衷于将宏添加到特定于 MacOS 的 GNU 自动工具中。