CMake导入的库行为

我和CMake有一个奇怪的问题。

我正在将Curl导入到我的项目中,所以我为您编写了一个简单的CMakeLists.txt文件摘要。

ADD_LIBRARY(libcurl SHARED IMPORTED)

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

当我运行CMake时,它会为MS VC ++生成项目文件(也适用于Linux)。 然后进入项目文件,我发现curl库( libcurl-NOTFOUND )的错误引用!

如果我将我的代码更改为静态导入:

ADD_LIBRARY(libcurl STATIC IMPORTED)

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

我找到了对../lib/libcurl.lib的正确引用。

你知道为什么会这样吗?

非常感谢你!

对于共享库, IMPORTED_LOCATION必须指向DLL,而不是导入lib。 请参阅文档 。 您可能还想设置IMPORTED_IMPLIB属性。

顺便说一下,CMake还有一个针对Curl的查找包 ; 也许你可以使用它?