c++ - CMake 导入的库行为

标签 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)生成项目文件。然后进入项目文件我发现curl库的引用错误(libcurl-NOTFOUND)!

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

ADD_LIBRARY (libcurl STATIC IMPORTED)

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

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

你知道为什么会这样吗?

非常感谢!

最佳答案

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

顺便说一句,CMake 也有一个 find package对于 curl ;也许你可以使用它?

关于c++ - CMake 导入的库行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850736/

相关文章:

c++ - C++ 宏中的随机数

c++ - Code::阻止用其他语言编写代码

c - 数组中数字序列的最小总和。不需要代码

cmake - 从 CMake 脚本构建 doxygen

opencv - OpenCV:在Windows 7上构建库期间,cmake失败

c++ - 更改OpenCV卡尔曼滤波器的增益以使其响应更快

c++ - 包含非可移动构造字段的类型如何成为可移动构造的?

linux - 如何在 cmakelist.txt 中打印变量内的值

c++ - constexpr 与 const : Will use a constexpr instead of const better help compile to optmize?

c - C 中的 While 循环