2013-02-13 8 views
8

CMakeに奇妙な問題がありました。CMakeインポートされたライブラリの動作

私のプロジェクトにCurlをインポートしていますので、CMakeLists.txtファイルの簡略化したサマリーを書きます。

ADD_LIBRARY(libcurlのSHAREDインポート)

SET_PROPERTY(PROPERTY IMPORTED_LOCATION ../lib/libcurl.lib libcurlのTARGET)

私はCMakeのを実行すると、それはのためのプロジェクトファイルを生成し、 MS VC++(Linuxの場合も同様)。プロジェクトファイルに、カールライブラリ(libcurl-NOTFOUND)への間違った参照があります。

私は、静的インポートに私のコードを変更した場合:

ADD_LIBRARY(libcurlのSTATICインポート)

SET_PROPERTY(PROPERTY IMPORTED_LOCATION ../lib/libcurl.lib libcurlのTARGET)

私は../lib/libcurl.libの正しい参照を見つけました。

これはなぜ起こりますか?

ありがとうございました!

答えて

11

共有ライブラリの場合、IMPORTED_LOCATIONはインポートライブラリではなくDLLを指す必要があります。 documentationを参照してください。 IMPORTED_IMPLIBプロパティを設定することもできます。

ところで、CMakeにはCurlのfind packageもあります。おそらくあなたはそれを使うことができますか?

+0

これはまだ試しましたが、問題は同じです。また、DLLエクスポート関数にアクセスするためにLIBファイルをリンクする必要があります。 : ソースツリーに付属しているlibcurl.dllをリンクしているので、私はパッケージを使用していません。 –

+0

Angew私はあなたの答えをよく読んで、IMPORTED_IMPLIBを設定しました。 !! –

+1

@ DareDevil73それはあなたのために働く場合、答えを受け入れることはなぜですか?それはSOが働くことになっている方法です。 – Angew

関連する問題