Я пытаюсь собрать и выполнить программу, использующую protobufs.Я строю этот проект с CMake3.Проблема в том, что когда я делаю проект, я получаю эту ошибку
fatal error:
'google/protobuf/stubs/common.h' file not found
#include <google/protobuf/stubs/common.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
Я опубликую свою структуру каталогов для этого проекта
Изображение структуры каталогов
структура каталогов расширена
Вот мои файлы CMakeLists.txt
верхнего уровня в TestCode /
cmake_minimum_required(VERSION 3.5)
set (CMAKE_CXX_STANDARD 11)
add_subdirectory(protobufs)
add_subdirectory(main)
CMakeList.txt в main /
cmake_minimum_required(VERSION 3.5)
set (CMAKE_CXX_STANDARD 11)
add_executable(test_exe
main.cc
)
target_link_libraries(protos ${PROTOBUF_LIBRARIES})
CMakeLists под protobufs /
cmake_minimum_required(VERSION 3.5)
set (CMAKE_CXX_STANDARD 11)
find_package(Protobuf REQUIRED)
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS
dog.proto
)
add_library(protos ${PROTO_SRCS})
target_link_libraries(protos
PUBLIC
${PROTOBUF_LIBRARIES}
)
target_include_directories(protos
PUBLIC
${PROTOBUF_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
)
Вот как я строю проект
cd build
cmake ..
make -j8
Я не могу понять, почему не найдены protobufs дляосновная программа.если я просто попытаюсь собрать protobufs, используя make, то они будут успешно построены.Любые идеи будут оценены.
РЕДАКТИРОВАТЬ: Я решил это.В моем CMakeLists.txt в main / мне нужно было добавить test_exe в мой target_link_libraries
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11)
add_executable(test_exe
main.cc
)
target_link_libraries(test_exe protos)