簡體   English   中英

在 bazel 構建中使用宏

[英]Using macros with bazel build

我正在使用宏來啟用我的代碼的日志記錄。 另外,我正在使用 bazel 構建。 目前我需要更改我的 .cpp 文件以包含#define以啟用此宏。 有沒有辦法可以將它與bazel build命令一起提供?

一種選擇是直接使用--cxxopt標志控制#define

例如,考慮以下代碼:

#include <iostream>

#ifndef _MY_MESSAGE_
    #define _MY_MESSAGE_ "hello"
#endif


int main(int argc, char const *argv[]) {
    std::cerr << "message: " _MY_MESSAGE_ "\n";

#ifdef _MY_IDENTIFIER_
    std::cerr << "if branch \n";
#else
    std::cerr << "else branch \n";
#endif
    return 0;
}

沒有標志的建築應該導致以下結果:

> bazel build :main
...
> ./bazel-bin/main
message: hello
else branch

而通過設置標志:

> bazel build --cxxopt=-D_MY_IDENTIFIER_ --cxxopt=-D_MY_MESSAGE_="\"hi\"" :main
> ./bazel-bin/main
message: hi
if branch

同樣適用於bazel run

> bazel run --cxxopt=-D_MY_IDENTIFIER_ --cxxopt=-D_MY_MESSAGE_="\"hi\"" :main
...
message: hi
if branch

(僅在 linux 上測試)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM