2

私はcmakeの関数を使おうとしています:

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)

そのコードスニップは機能しません。

4

1 に答える 1

5

このCheckLibraryExistsモジュールは、C++ ではなく、C シンボルに対してのみ機能します。個人的には、ライブラリとインクルード パスを検索するためにfind_libraryandを使用します。find_pathライブラリに適切なシンボルが含まれていない場合、ユーザーはリンク中にすぐに気付くでしょう...

yaml-cpp は pkg-config ファイルをインストールするため、FindPkgConfigモジュールを使用することもできます。ただし、yaml-cpp 自体は CMake を使用してビルドされているため、実際にファイルをインストールするように促す必要がありyaml-cpp-config.cmakeます。詳細については、このチュートリアルなどを参照してください。

于 2012-04-18T13:28:40.933 に答える