Saya mengonversi proyek dari Autotools ke CMake. Kami memiliki file configure.ac, dengan pernyataan:

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

Saya ingin menggantinya ke cmake, dan tidak yakin bagaimana (tidak memiliki pkg-config) Yang saya butuhkan adalah:

  • periksa libgsuffix ada dan temukan jalur.
  • Periksa gsuffix_create ada di libgsuffix
  • Tambahkan -lgsuffix ke kompilasi - ini saya pikir saya tahu bagaimana melakukannya.

Adakah yang bisa mengarahkan saya ke arah yang benar?

4
Eyal H 13 Maret 2017, 16:51

2 jawaban

Jawaban Terbaik

Tidak ada terjemahan satu lawan satu. Secara umum, dengan CMake Anda tidak memeriksa apakah setiap header dan setiap perpustakaan benar-benar berfungsi. Jika Anda menemukan file tersebut, Anda menganggapnya akan berhasil.

  • Mungkin find_package tepat untuk Anda, tergantung seseorang yang telah menulis tes semacam itu atau perpustakaan Anda menyediakan file konfigurasi yang sesuai.

  • Find_library dimaksudkan untuk menemukan perpustakaan, tetapi berdasarkan nama.

  • Jika Anda benar-benar harus memeriksa apakah pustaka Anda berfungsi, gunakan CheckLibraryExists.

2
usr1234567 13 Maret 2017, 16:03

Seperti yang disebutkan, tidak menemukan cara untuk melakukan ini dengan satu perintah.

Saya tidak punya cukup waktu untuk memahami bagaimana melakukan sesuatu yang benar-benar umum, jadi saya bisa memberikan kerangka saya untuk 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)
1
Eyal H 15 Maret 2017, 18:52