CLion构建Tensorflow源码工程

环境配置

使用2018.3版本的Clion及其Bazel插件, 更新版本的Bazel插件官宣不再支持Clion, 实测无法生成bazel文件。此外,bazel的版本也需要注意一下,目前Bazel迭代频繁且向后兼容性很差,由此导致了Tensorflow源码的版本和Bazel版本的强耦合,以及Bazel插件和Bazel版本的强耦合并间接和Tensorflow源码版本耦合在一起。
笔者使用的是Tensorflow 1.14的代码,对应bazel 0.24.1,bazel插件支持0.23.0以上bazel,二者不冲突。但如果使用TF 1.13版本,要求bazel 0.21.0,就和bazel插件支持的bazel版本有冲突,导致报错:

那如何解决这个问题呢?毕竟IDE可以不更新,源码总不能一直维持1.14吧,毕竟2.0已经在如火如荼的迭代中了。
我们知道:
1. 构建工程生成的.clwb目录如果不进行(也不该进行) git add,就会一直留在源码目录中,不会随着分支切换被清空。
2. 工程构建完毕之后,相关的文件也是以符号链接的形式添加到源码目录,而符号链接默认也不会随着工程分支的切换发生变化。
3. 切换分支会引起Clion更新符号索引,但不会完全重建工程。
由此,就有个取巧的办法:先使用TF1.14构建源码工程,再用git切换到其他版本更新索引,亲测有效。

构建工程

1.Import bazel project, .clwb里会存相应的符号信息. 此时可以通过编辑以下文件控制实际生成的目标, 此外, 还可以在Bazel build的过程中open project view来控制. 笔者这边希望生成全部符号的关系, 所以使用了默认的”all”

2. 工程目录下执行 ./configure 配置, 生成的.bazelrc文件用来保证bazel命令顺利执行

Continue reading