2016-07-07 2 views
-1

こんにちは、私は次のコードを持っている、と私はライブラリが存在しない場合はcmakeのエラーcmakeの中の文が動作しない場合は

find_library(lx 
      NAMES libx.a 
      HINTS "/home/username/HDF_SOURCES/lib") 
if(NOT lx) 
    message(FATAL_ERROR "libx.a not found") 
endif() 
を投げることを期待

私も試してみました場合(LX-NOTFOUND)が、ライブラリが存在しない場合でもcmakeは正常に実行されます。 !! ?

if(lx)でループを変更してライブラリパスが間違っている場合は、混乱する部分です。これはどのように可能ですか?私は間違って何かを理解しましたか?

私はNOT_DEFAULT_PATHを追加this答え

+0

になっている正確にどのように動作する、問題を解決し、次いますが、 'lx'がキャッシュされていませんか? – usr1234567

+0

'find_library()'はキャッシュされた変数に結果を格納します。したがって、ライブラリを一度しか見つけられなかった場合は、再度検索を実行しません。これを確認するために 'find_library()'コールの前に 'unset(lx CACHE')を試みてください。 – Florian

+0

それはキャッシュされていませんでしたが、私はファイルを削除し続けました。 – itsnevertoobadtoaskforhelp

答えて

0

は、今ではそれが

find_library(lx 
      NAMES lib.a 
      HINTS "/home/username/lib" 
      NO_DEFAULT_PATH) 

if (NOT lx) 
    message(FATAL_ERROR "lib.a not found") 
endif() 
+0

これはなぜ起こったのですか? – itsnevertoobadtoaskforhelp

+1

あなたのライブラリはデフォルトパスの1つに見つかりましたか? – Florian

+0

DEFAULT_PATHの定義は何ですか?私は検索したが、見つけられなかった。私のホームフォルダを検索しようとしていない限り、それはありそうもありません。 – itsnevertoobadtoaskforhelp