2017-03-13 73 views
1

我將一個項目從Autotools轉換爲CMake。 我們有一個configure.ac文件,用下面的語句:替換CMake中的AC_CHECK_LIB

AC_CHECK_LIB([gsuffix], [gsuffix_create], [], AC_MSG_ERROR([Can not find gsuffix library])) 

我想將它替換到CMake的,並且不知道如何(它沒有pkg配置) 我需要的是:

  • 檢查libgsuffix是否存在並找到路徑。
  • 檢查gsuffix_create是否存在於libgsuffix
  • 添加-lgsuffix來編譯 - 這個我想我知道該怎麼做。

任何人都可以指向正確的方向嗎?

+2

你可能會尋找['CHECK_SYMBOL_EXISTS'](HTTPS ://cmake.org/cmake/help/latest/module/CheckSymbolExists.html)或類似的功能。 – Angew

+1

另外,['FIND_LIBRARY'](https://cmake.org/cmake/help/v3.4/command/find_library.html) – languitar

回答

0

沒有一對一的翻譯。一般來說,使用CMake時,您不會檢查每個標題和每個庫是否實際工作。如果你找到這個文件,你會認爲它會起作用。

  • 也許find_package是適合你的,根據已經有人寫過這樣的測試或您的圖書館提供了一個根據配置文件。

  • Find_library是爲了找到圖書館,但名稱。

  • 如果您確實需要檢查您的圖書館是否有效,請使用CheckLibraryExists

0

如上所述,沒有找到反正用一個命令做到這一點。

我沒有足夠的時間去了解如何做完全通用的,所以我可以給我一個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)