C++ Tensorflow如何定义预处理器宏?

C++ Tensorflow如何定义预处理器宏?,c++,tensorflow,macros,bazel,C++,Tensorflow,Macros,Bazel,定义一些宏。TF如何设置宏,如ANDROID,ANDROID,平台谷歌,树莓PI 我认为bazel构建文件可能预设了一些宏,如cmake(),但我找不到任何线索。查看该文件。例如,它定义了build:android\u arm--config=android。这意味着您可以在bazel中使用bazel build--config=android-我想,带有目标android的编译器在系统头中提供了一个android和\uuu android\uuuuuuuu定义-因此您不必显式修改cc\u二进制

定义一些宏。TF如何设置宏,如
ANDROID
ANDROID
平台谷歌
树莓PI

我认为bazel构建文件可能预设了一些宏,如cmake(),但我找不到任何线索。

查看该文件。例如,它定义了
build:android\u arm--config=android
。这意味着您可以在bazel中使用
bazel build--config=android
-我想,带有目标android的编译器在系统头中提供了一个
android
\uuu android\uuuuuuuu
定义-因此您不必显式修改
cc\u二进制
目标

您还可以将定义显式添加到
cc\u二进制文件中:

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)
从:

定义:
字符串列表;可选

要添加到编译行的定义列表。受制于“Make”变量 替换和伯恩壳标记化。每个字符串,必须 由单个Bourne shell令牌组成,在其前面加上
-D
(或
/D
) Windows)并添加到
COPTS
。与COPT不同,这些标志是为 目标和依赖它的每一条规则!小心点,因为 这可能会产生深远的影响。如有疑问,请添加“-D”(或/D Windows)将标志改为
copts

我建议您将定义添加到
copts
属性中,例如:

cc_binary(
    srcs = ["main.cpp"],
    copts =  ["-DMY_DEFINE"],
)

非常感谢。所以,我想你是说,当用户输入
bazel build
命令时,这些宏是在运行时设置的?或者,如果我想“打开”这些宏,我在BUILD中添加
-D
选项?我只是再次确认我对tf用法的猜测。@skytree我修改了我的答案