【发布时间】: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)。如果您想在一个架构上编译源代码以在其他架构上运行,这称为交叉编译,这是一个不同的问题。