2013-02-13 14 views
8

Mam dziwny problem z CMake.CMake importowane zachowanie biblioteki

Importuję Curl do mojego projektu, więc piszę dla ciebie uproszczone podsumowanie mojego pliku CMakeLists.txt.

ADD_LIBRARY (libcurl SHARED importowane)

SET_PROPERTY (cel libCurl PROPERTY IMPORTED_LOCATION ../lib/libcurl.lib)

Kiedy uruchomić CMake generuje pliki projektu dla MS VC++ (także dla Linuksa). Następnie do pliku projektu znajduję błędne odniesienie do biblioteki curl (libcurl-NOTFOUND)!

Jeśli mogę zmienić kod do importu statycznej:

ADD_LIBRARY (libcurl STATIC importowane)

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

Znajduję właściwe odwołanie do ../lib/libcurl.lib.

Czy masz pojęcie, dlaczego tak się dzieje?

Dziękuję bardzo!

Odpowiedz

11

Dla biblioteki współużytkowanej, IMPORTED_LOCATION musi wskazywać na bibliotekę DLL, a nie na bibliotekę importu. Zobacz documentation. Możesz także ustawić właściwość IMPORTED_IMPLIB.

BTW, CMake ma również find package dla Curl; może mógłbyś użyć tego?

+0

Próbowałem tego, ale problem jest taki sam. Ponadto muszę połączyć plik LIB, aby uzyskać dostęp do wyeksportowanej funkcji DLL. :( Nie używam pakietu znajdującego, ponieważ łączę plik libcurl.dll dostarczony z moim drzewem źródłowym –

+0

Angew Dobrze przeczytałem twoją odpowiedź i ustawiłem IMPORTED_IMPLIB: nie działa !!! Dziękuję bardzo! !! –

+1

@ DareDevil73 Jeśli to działa dla Ciebie, dlaczego nie przyjąć odpowiedzi? Tak powinno działać SO. – Angew

Powiązane problemy