对于我的本地开发服务器,我使用了
cmake install
来安装 nanomsg(到 /usr/local
),并从其安装位置访问头文件。该项目在本地正常运行。然而,现在我需要在我的 TensorFlow 工作区内打包 nanomsg。我尝试了以下两种方法,但都不理想:
与OpenCV的this answer类似,我将nanomsg预编译为私有存储库,并使用http_archive directive在我的工作区内(在
tensorflow/workspace.bzl
中)加载它,然后在相关的构建脚本中包含头文件和库。这样运行很好,但不是一种可移植的解决方案。一个更可移植的解决方案是,我创建了一个
genrule
来运行一系列特定的cmake
命令,用于构建nanomsg。这种方法更加整洁,但genrule
不能被重复使用来cmake
其他项目。(我参考了this discussion)。
很明显,在Bazel构建中,cmake
不被视为一流公民。是否有人在自己的项目中遇到了这个问题,并创建了一种通用、可移植的方式来在使用cmake
构建的Bazel项目中包含库?如果有,你是如何解决的?