2012-04-18 60 views
2

我試圖使用的cmake的功能:使用CMAKE如何使用CHECK_LIBRARY_EXISTS來檢查C++庫?

CHECK_LIBRARY_EXISTS(library function location variable) 

我如何檢查C++庫有哪些?

CHECK_LIBRARY_EXISTS(yaml-cpp "YAML::Token" ${YAML-CPP_PATHS} HAVE_YAML-CPP) 
IF(HAVE_YAML-CPP) 
    MESSAGE(STATUS "YAML-CPP libraries founded: OK") 
ENDIF(HAVE_YAML-CPP) 

IF(NOT HAVE_YAML-CPP) 
    MESSAGE(FATAL_ERROR "ERROR: unable to link YAML::Token") 
ENDIF(NOT HAVE_YAML-CPP) 

該代碼片段不起作用。

回答

5

CheckLibraryExists模塊僅適用於C符號,不適用於C++。我個人只會使用find_libraryfind_path來查找庫和包含路徑。如果庫不包含正確的符號,用戶要在鏈接過程中很快發現...

由於YAML-CPP安裝以pkg-config文件,你也可以使用FindPkgConfig模塊。但是,由於yaml-cpp本身是使用CMake構建的,所以應該鼓勵他們實際安裝yaml-cpp-config.cmake文件。見例如這tutorial欲知更多信息。