Zhang31s 2023-07-10 15:18 采纳率: 50%
浏览 37
已结题

gn中的libs和deps有什么区别

BUILD.gn

    libs = [
       "pthread_static.lib",
    ]
    deps = [
      ":pthread_static",
    ]

这里面的libs和deps里的pthread_static有什么区别,用cmake的话该怎么写?

  • 写回答

1条回答 默认 最新

  • IT论之程序员 2023-07-10 16:23
    关注

    gn中的libs和deps有以下区别:

    1. libs定义的是链接到目标的静态库文件,相当于cmake中的target_link_libraries。
    2. deps定义的是目标的依赖关系,相当于cmake中的add_dependencies。
    3. libs里面填写的都是静态库的文件名,而deps里面填写的都是目标名。
    4. libs主要影响链接,deps主要影响编译顺序。
      换成cmake的写法如下:
      cmake
      add_library(pthread_static STATIC pthread_static.c)

    add_executable(myapp main.c)

    target_link_libraries(myapp pthread_static)

    add_dependencies(myapp pthread_static)
    所以libs定义了myapp链接静态库pthread_static,deps定义了myapp依赖目标pthread_static。
    总结:

    • libs用于链接静态库文件
    • deps用于定义目标依赖关系控制编译顺序
    • cmake中分别用target_link_libraries和add_dependencies实现相同功能
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 已采纳回答 7月14日
  • 创建了问题 7月10日