在CMake中替换AC_CHECK_LIB

4
我将一个项目从Autotools转换到CMake。 我们有一个名为configure.ac的文件,其中包含以下语句:
AC_CHECK_LIB([gsuffix], [gsuffix_create], [], AC_MSG_ERROR([Can not find gsuffix library]))

我想将它替换为cmake,但不确定如何操作(因为它没有pkg-config)

  • 检查libgsuffix是否存在并查找其路径。
  • 检查libgsuffix中是否存在gsuffix_create。
  • 将-lgsuffix添加到编译中——我认为我知道如何操作。

有人能指导我正确的方向吗?


2
您可能正在寻找CHECK_SYMBOL_EXISTS或类似的功能。 - Angew is no longer proud of SO
1
另外,FIND_LIBRARY - languitar
2个回答

2
没有一对一的翻译。通常情况下,使用CMake时不会检查每个头文件和每个库是否真正可用。如果找到了该文件,则假定它能够完成任务。
也许find_package适合您,具体取决于是否有人已经编写了这样的测试或您的库提供相应的配置文件。 Find_library用于按名称查找库。
如果确实需要检查库是否可用,请使用CheckLibraryExists

1
如前所述,没有找到一种方法来完成这个任务。
我没有足够的时间完全理解如何做一些通用的事情,因此我可以提供我的FindGSUFFIX.cmake的框架:
FIND_LIBRARY(GSUFFIX_LIBRARY NAMES gsuffix)

INCLUDE(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(gsuffix gsuffix_create ${GSUFFIX_LIBRARY} GSUFFIX_VERIFIED)

# Handle the QUIETLY and REQUIRED arguments and set PCRE_FOUND to TRUE if all listed variables are TRUE.
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GSUFFIX DEFAULT_MSG GSUFFIX_LIBRARY GSUFFIX_VERIFIED)

MARK_AS_ADVANCED(GSUFFIX_LIBRARY)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接