Как скомпилировать простое приложение с использованием Bazel - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть следующий файл BUILD:

cc_binary(
    name = "main",
    srcs = ["main.cpp"],
    copts = [
        '-fpic',
        '-pthread'
    ],
)

со следующим main.cpp:

#include <thread>
int main(int argc, char *argv[])
{
    auto a = std::thread([](){});
    return 0;
}

Приведенный выше файл cpp компилируется с g++ -pthread, но не компилируется при компиляции вБазель со следующей ошибкой:

/usr/include/c++/7/thread:122: error: undefined reference to 'pthread_create'

Я неправильно передаю флаг? Что мне нужно сделать, чтобы иметь потоки при компиляции с использованием Bazel?

РЕДАКТИРОВАТЬ:

ни -pthread, ни -lpthread не работает

1 Ответ

3 голосов
/ 07 ноября 2019

-lpthread необходимо добавить к атрибуту linkopts (как предложил King Stone и дмс)

cc_binary(
    name = "main",
    srcs = ["main.cpp"],
    copts = [
        "-fpic",
    ],
    linkopts = ["-lpthread"],
)

error: undefined reference - ошибка компоновщика. Все команды, указанные в атрибуте linkopts, передаются компоновщику.

...