2017-06-24 1 views
1

add_libraryを使用してCMAKEで静的ライブラリをインポートしています。私も、私はこれを行うthat.Soを確認したいfine.But libの輸入:CMake: "add_library IMPORTED" libが存在するかどうか確認してください

add_library(MYLIB STATIC IMPORTED) 
set_target_properties(MYLIB PROPERTIES IMPORTED_LOCATION path/to/mylib.a) 
#if(NOT MYLIB) 
    # message(FATAL_ERROR "MYLIB library not found") 
#endif() 

それはいつものパスが正しく、私がいることを確認することができok.How LIBがインポートされた場合でも、falseを返します。 libはインポートされていますか?あなたは、あなたがそれがライブラリを使用しようとすることで、インポートされたチェックすることができ、いずれにしても処理を停止/失敗しているので、cmakeの3.4.1

+0

あなたの質問にAndroid NDKタグを追加してください。多くの人々は、彼らが手がかりを持っていないプラットフォームの質問に答えることを避けます。この場合、正しい標準CMakeの答えを受け入れることさえできません。 – utopia

答えて

0

を使用して

あなたが実際にインポートする前に確認したい場合は、このようなものが適して:

find_library(MYLIB 
    NAMES mylib 
    PATHS 
    path/to/mylib.a 
    DOC "Find library mylib" 
    NO_DEFAULT_PATH) 

if(NOT MYLIB) 
    message(FATAL_ERROR "MYLIB library not found") 
endif() 

あなたはcmakeのは、最初の検索する前に、すべての多くのデフォルトの場所で見て気にしない場合は、NO_DEFAULT_PATHを削除することができますあなたの述べたPATHS。

+0

私は言及を忘れました - 私は目的のために 'ライブラリを見つける'を使用しません。 Android NDKは、デフォルトの検索パスをいくつかの内部NDKディレクトリに設定するため、NDKライブラリ以外のライブラリをそのメソッドで探すのが難しいです。それが私がadd_libraryに切り替えた理由です...また、libが見つからないという明確なエラーメッセージを吐き出したいと思います。あなたが知っているように、ツールのエンドユーザが問題の原因を理解するのに賢明ではないと思うかもしれません;) –

+0

@Michael Ivanov私が提案できる唯一の他の方法は、 'IF(EX/mylib.a) ' – utopia