15

1 つ指定find_library(<var> name PATHS path1..pathn)

私の質問は、名前をライブラリ ファイル (Windows および Linux) とどのようにfind_library()一致させるかです。

たとえばfind_library()、提供されている GraphicsMagicK の Windows バイナリ インストールで、MagicK および MagicK++ DLL ファイルを特定できません。

ファイルは次のとおりです。CORE_RL_magick_.dll

クエリの検索: magickorCORE_RL_magickは機能しません。

4

2 に答える 2

24

次のドキュメント リンクを参照してください。

http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:find_library

http://www.cmake.org/cmake/help/v2.8.10/cmake.html#variable:CMAKE_FIND_LIBRARY_PREFIXES

http://www.cmake.org/cmake/help/v2.8.10/cmake.html#variable:CMAKE_FIND_LIBRARY_SUFFIXES

find_library は、1 つ以上のライブラリ名を受け入れる場合があります。これらの名前には、CMAKE_FIND_LIBRARY_PREFIXES の値が先頭に追加され、CMAKE_FIND_LIBRARY_SUFFIXES が追加されます。この 2 つの変数は、ライブラリの接頭辞または接尾辞に応じて、OS ごとに設定する必要があります。

あなたの場合、私はWindows用に書きます

SET(CMAKE_FIND_LIBRARY_PREFIXES "")
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")

および Linux の場合

SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")

そして書く

find_library(
    magick
    CORE_RL_magick_ (or NAMES if there are multiple names for the same library on different systems)

    PATHS
      path1
      path2
    ...
    (other options that are specified in documentation and would be usefull to you)
)

編集:

CMAKE_FIND_LIBRARY_PREFIXESコマンドによってCMAKE_FIND_LIBRARY_SUFIXES自動的に設定されるため、変数を手動で設定するよりも、最初に呼び出してからその時点で呼び出す方が良い解決策です。project()find_library()

于 2013-01-10T00:00:58.840 に答える