13

ビルドは buntu 11.04 で機能していましたが、現在は 12.04 では機能しません。

の場所と競合していますsomeLib.so。つまり、間違った場所を探しています。 /usr/lib/here/someLib.soが正しい位置です。

ccmakeで「c」構成コマンドを実行すると、競合に気づきました.. 1回。現在、ccmake は文句を言わなくなりましたが、エラーはまだ残っています。 runtime library [someLib.so] in /usr/lib may be hidden by files in: /usr/lib/here

ビルド エラーの原因となる CMakeLists.txt の行は次のとおりです。

ADD_EXECUTABLE(test main.cpp)
TARGET_LINK_LIBRARIES(test moreStuff evenMoreStuff)

ファイルに問題がありbuild.makeます。これはccmakeによって生成されます。ccmake が@ ではなくsomeLib.soatという考えをどこから得ているのかわかりません。どこかの発言だと思います。私はそれを見つけていません。/usr/lib//usr/lib/here/SET()

1) 構成ファイル (ccmake 'c' cmd) は何と呼ばれますか? それはどこですか(同じディレクトリですか?)?削除すれば、エラーが再び表示されると思います。(CMakeFile.txt を変更しても解決しないようです。)
2) の場所がどこに設定されているかを調べるにはどうすればよいsomeLib.soですか? (私は何を探していますか?)

私はCCMAKEが嫌いです。ありがとう

4

2 に答える 2

1

これは、find_library 呼び出しの 1 つに問題があると言えます。私の記憶が正しければ、これは、同じ名前のライブラリ ファイルを含む 2 つの異なる場所を環境が指しているときに発生していました。

両方の場所を指さないように環境を変更するか、find_library 呼び出しで NO_*_PATH のいずれかを使用して、cmake が両方の場所を見つけないようにすることで、これを防ぐことができます (たとえば、この find_library とNO_DEFAULT_PATH を使用して、cmake が環境パスを使用しないようにします - ドキュメントを参照してください: http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:find_library )

find_library(someLib_location NAMES someLib PATHS /usr/lib/here/ NO_DEFAULT_PATH)

1)については、CMakeCacheファイルと呼ばれていると思いますが、最も安全な方法は、ビルド構造全体を削除することです(ソースからビルドしている場合は問題ありません)

2)については、ライブラリ名でCMakeList.txtファイルを検索します(おそらくCMAKE_FIND_LIBRARY_PREFIXESおよびCMAKE_FIND_LIBRARY_SUFFIXES変数によって追加されるため、.soサフィックスとlibプレフィックスなし)

于 2013-01-16T09:40:16.523 に答える