c++ - Tensorflow 如何定义预处理器宏?
问题描述
tensorflow/stream_executor/platform/platform.h
定义了一些宏。TF 是如何设置宏,如ANDROID
, __ANDROID__
, PLATFORM_GOOGLE
, RASPBERRY_PI
?
我认为 bazel BUILD 文件可能会预设一些宏,例如 cmake (通过 cmake 定义预处理器宏),但我找不到任何线索。
解决方案
查看.bazelrc文件。例如,它定义了build:android_arm --config=android
. 这意味着您可以在 bazel 中构建bazel build --config=android
- 我猜一个带有目标 android 的编译器在系统头文件中提供ANDROID
并 __ANDROID__
定义 - 所以您不必显式修改cc_binary
目标。
您还可以将定义显式添加到cc_binary
:
cc_binary
目标提供了一个和define
属性copts
:
cc_binary(name, deps, srcs, data, args, compatible_with, copts, defines, deprecation, distribs, exec_compatible_with, features, includes, licenses, linkopts, linkshared, linkstatic, malloc, nocopts, output_licenses, restricted_to, stamp, tags, testonly, toolchains, visibility, win_def_file)
从文档中:
定义:
List of strings; optional
要添加到编译行的定义列表。受制于“Make”变量替换和 Bourne shell 标记化。每个字符串必须由单个 Bourne shell 令牌组成,前面带有
-D
(或/D
在 Windows 上)并添加到COPTS
. 与 不同copts
的是,这些标志是为目标和依赖它的每个规则添加的!要非常小心,因为这可能会产生深远的影响。如有疑问,请添加“-D”(或 Windows 上的 /D)标志copts
。
我建议您将您的定义添加到copts
属性中,例如:
cc_binary(
srcs = ["main.cpp"],
copts = ["-DMY_DEFINE"],
)
推荐阅读
- node.js - 如何从 findAll 方法内部访问数据
- python - 查找其他两个之间的特定最近点
- python-3.x - 使用python将类实例复制到另一个
- jquery - 未达到 jQuery on() 方法
- javascript - 微服务快递网关中的 Socket.io 集成
- python - for 循环内的字典未按预期工作 TypeError:replace() 至少需要 2 个参数(给定 1 个)
- r - 如何将 geom_point、geom_bar 和 geom_errobar 与 position_dodge 对齐
- react-native - react-native flatlist 在项目删除/向上滑动时制作动画
- javascript - 用于 cookie 匹配的正则表达式
- git - 为什么使用 git 从 powershell 复制的二进制文件与原始文件不同?