【问题标题】:How to build a library directly from object files with CMake如何使用 CMake 直接从目标文件构建库
【发布时间】:2012-01-17 16:46:24
【问题描述】:

给定一组目标文件,您将如何使用 CMake 构建静态库?

使用自动工具我会这样做

libXXX.a: $(OBJFILES)
    $(AR) cru $@ $(OBJFILES)
    $(RANLIB) $@

OBJFILES 是目标文件的列表。

如何在 CMake 中做到这一点?

编辑:我无法重新编译原始 cxx 文件,我必须使用目标文件 (*.o) 来创建库。

【问题讨论】:

    标签: cmake static-libraries object-files


    【解决方案1】:

    添加custom command,类似于:

    add_custom_command(OUTPUT libXXX.a COMMAND ${AR} cru ${OBJFILES} ).
    

    如有必要,您可以使用 add_custom_targetadd_dependencies 将您的 libXXX.a 添加到特定目标,或者自定义依赖项。

    【讨论】:

      【解决方案2】:

      CMakeLists.txt 中使用add_library

      add_library(XXX STATIC foo.c bar.cc baz.cxx)
      

      【讨论】:

      • 感谢您的回答。但是,这里的重点是我有目标文件,我不能重新编译 cxx 文件。因此我只想使用现有的目标文件来创建一个库。
      猜你喜欢
      • 2019-08-17
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多