Дженкинс: Ошибка CMake в /usr/local/share/cmake-3.11/Modules/FindProtobuf.cmake - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь запустить CMakeLists.txt на сервере сборки Jenkins.CMakeLists.txt с вызовом protobuf выглядит следующим образом:

find_package(Protobuf REQUIRED)
target_link_libraries(${PROJECT_NAME} INTERFACE ${Protobuf_LIBRARIES})

protobuf_generate_cpp(comm.pb.cc     comm.pb.h     proto/comm.proto)
protobuf_generate_cpp(comm_ccd.pb.cc comm_ccd.pb.h proto/comm_ccd.proto)
protobuf_generate_cpp(comm_cda.pb.cc comm_cda.pb.h proto/comm_cda.proto)
protobuf_generate_cpp(comm_plc.pb.cc comm_plc.pb.h proto/comm_plc.proto)

При запуске CMakeLists на Jenkins генерируется следующая ошибка:

12:01:11 CMake Error at /usr/local/share/cmake-3.11/Modules/FindProtobuf.cmake:425 (file):
12:01:11   file STRINGS file "/usr/local/include/google/protobuf/stubs/common.h"
12:01:11   cannot be read.
12:01:11 Call Stack (most recent call first):
12:01:11   libraries/ScAPIProtocol/CMakeLists.txt:35 (find_package)

Команда CMake:

12:01:11 + cd build
12:01:11 + cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/Qt/5.10.0/gcc_64 -DProtobuf_INCLUDE_DIR=/usr/local ../code

1 Ответ

0 голосов
/ 18 июня 2018

Теперь у меня есть решение: это было похоже на то, что предложил @ Michał Walenciak.Вы должны проверить разрешения на вызов cmake.

Прежде всего, мне пришлось настроить вызов cmake на

cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/Qt/5.10.0/gcc_64
      -DProtobuf_INCLUDE_DIR=/usr/local/include
      -DProtobuf_LIBRARY=/usr/local/lib/libprotobuf.so ../code

Кроме того, jenkins выполняет этот вызов bash с помощью "jenkins"пользователь, принадлежащий к группе "Дженкинс".Для правильного чтения файлов protobuf необходимо изменить пользователя и группу указанных каталогов include и lib следующим образом:

$ sudo chown -R jenkins:jenkins /usr/local/include
$ sudo chown -R jenkins:jenkins /usr/local/lib

Надеюсь, это поможет, по крайней мере, в моем случае.Благодаря Михалу.

...