【问题标题】:adding google APIs library to cmake build将谷歌 API 库添加到 cmake 构建
【发布时间】:2017-04-01 19:10:58
【问题描述】:

我正在尝试创建 CMake 构建以使用 google API 库编译我的项目,google API 的源代码是使用协议缓冲区生成的。

假设我想为 https://github.com/GoogleCloudPlatform/cpp-docs-samples/blob/master/speech/api/streaming_transcribe.cc 制作 CMake 文件

streaming_transcribe.cc 正在使用 #include "google/cloud/speech/v1beta1/cloud_speech.grpc.pb.h" 位于google API 的源目录中,它的源代码需要与grpc 库和grpc++ 以及同一目录中的一堆其他源进行编译和链接。

示例中的makefile https://github.com/GoogleCloudPlatform/cpp-docs-samples/blob/master/speech/api/

正在将google APIs目录中的源代码编译为目标文件而不将它们链接到grpc,然后归档到ar文件,然后将streaming_transcribe.cc编译并与ar文件和grpc链接。

如何为 cmake 文件构建创建相同的过程?

【问题讨论】:

  • 我猜目标文件的归档只是一个静态库。在 CMake 中,您可以使用 add_library(STATIC) 命令创建它。
  • 那么我无法在另一个平台上编译源代码
  • 您在另一个平台上遇到哪个错误?你使用哪个CMakeLists.txt 文件?
  • 我的意思是其他架构,我无法在我的 PC 上编译 google API 源并将其放在 ARM 架构上并在那里编译项目,所以我希望 CMake 来做。
  • 1,2。 add_library(googleapis STATIC <sources>) 3. target_link_libraries(<project_name> googleapis)。如果您想在一个架构上编译源代码以在其他架构上运行,这称为交叉编译,这是一个不同的问题。

标签: c++ cmake


【解决方案1】:

目标文件存档是一个静态库。使用 CMake,您可以使用以下方式创建它:

add_library(<library-name> STATIC <sources...>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多