【问题标题】:CMake - Issue with static libraryCMake - 静态库问题
【发布时间】:2010-02-05 13:45:18
【问题描述】:

我在 winxp 上使用 CMake-2.8 和 Visual Studio 2005 生成器。

假设我从一些 cxx 文件和静态库 static.lib 创建了一个 dll (A.dll)

所以我调用Link_Directories来指定静态库所在的目录。 现在 A.dll 已经构建好了。

现在我想要从一些 cxx 源构建的 B.dll,A.lib(A.dll 的导入库)

现在,当我说 (B A) 的 Target_Link_Libraries 时,项目文件是使用 static.lib 创建的,也是依赖项。 现在 B 有两个依赖项 A 和 static.lib。但是我没有将 static.lib 的目录添加到 B 的 Link_Directories 并且我的构建失败。

我认为 B 不需要了解 static.lib

任何想法如何避免这种情况?

提前致谢, 苏里亚

【问题讨论】:

    标签: visual-studio-2005 cmake static-libraries


    【解决方案1】:

    来自CMake docs

    默认情况下,库依赖项是可传递的。当这个目标链接到另一个目标时,链接到这个目标的库也将出现在另一个目标的链接行上。请参阅 LINK_INTERFACE_LIBRARIES 目标属性以覆盖目标的传递链接依赖项集。

    因此,这应该可以解决您的问题:

    TARGET_LINK_LIBRARIES(B LINK_INTERFACE_LIBRARIES A)
    

    【讨论】:

    • 可能是我不明白这个 LINK_INTERFACE_LIBRARIES 的作用。但是当我用上面的行修改了我的 CMakeLists.txt 文件时,B 项目文件是在没有 A 本身的情况下创建的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多