【发布时间】:2018-02-19 03:34:17
【问题描述】:
我在使用nanomsg 的 TensorFlow 的私有分支之上编写了一个模块。
对于我的本地开发服务器,我使用 cmake install 安装 nanomsg(到 /usr/local)并从其安装位置访问头文件。该项目在本地运行良好。
但是,我现在需要在我的 TensorFlow 工作区中打包 nanomsg。我尝试了以下两种方法,但都不满意:
类似于 OpenCV 的 this answer,我将 nanomsg 预编译到私有存储库中,使用 http_archive directive 将其加载到我的工作区(在
tensorflow/workspace.bzl内),然后在相关构建脚本中包含头文件和库。这运行良好,但不是一个可移植的解决方案。一个更便携的解决方案,我创建了一个
genrule来运行特定序列的cmake命令,这些命令可用于构建 nanomsg。这种方法更整洁,但genrule不能重复用于cmake其他项目。 (我提到了this discussion)。
显然 cmake 在 Bazel 构建中不被支持为一等公民。有没有人在你自己的项目中遇到过这个问题,创建了一种通用的、可移植的方式来将库包含在使用 cmake 构建的 Bazel 项目中?如果是这样,您是如何处理的?
【问题讨论】:
-
您希望它的便携性如何? Linux、MacOS、Windows?对于 2,为什么不能将相同的 genrule 用于其他项目是一个问题?我在 Bazel 工作,到目前为止,我还没有听说有人提出通用解决方案。
标签: tensorflow build cmake bazel nanomsg