CMake导入的库行为

时间:2013-02-13 09:55:21

标签: c++ c cmake

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

我正在将Curl导入到我的项目中,因此我为您编写了一份关于CMakeLists.txt文件的简要摘要。

  

ADD_LIBRARY(libcurl SHARED IMPORTED)

     

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

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

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

  

ADD_LIBRARY(libcurl STATIC IMPORTED)

     

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

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

你知道为什么会这样吗?

非常感谢!

1 个答案:

答案 0 :(得分:15)

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

顺便说一下,CMake还有一个find package用于卷曲;也许你可以使用它?