2016-07-16 2 views
2

Я следуя инструкциям:Как создать среду google protobuf с cmake на окнах?

https://github.com/google/protobuf/tree/master/cmake

cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release 
-DCMAKE_INSTALL_PREFIX=../../../../install/protobuf ../.. 

nmake install 

В CMakeLists.txt моей программы я использую:

find_package(Protobuf REQUIRED) 

Но он говорит мне:

-- Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR) 

I думаю, я должен установить значение переменной среды.

Есть ли эффективный способ сделать это?

в protobuf-master/cmake/install.cmake я могу увидеть это:

configure_file(protobuf-config.cmake.in 
    ${CMAKE_INSTALL_CMAKEDIR}/protobuf-config.cmake @ONLY) 
configure_file(protobuf-config-version.cmake.in 
    ${CMAKE_INSTALL_CMAKEDIR}/protobuf-config-version.cmake @ONLY) 
configure_file(protobuf-module.cmake.in 
    ${CMAKE_INSTALL_CMAKEDIR}/protobuf-module.cmake @ONLY) 
configure_file(protobuf-options.cmake 
    ${CMAKE_INSTALL_CMAKEDIR}/protobuf-options.cmake @ONLY) 

Могут ли эти файлы установить переменную окружения? И как я могу их использовать?

ответ

1

Я предпочитаю создавать сторонние библиотеки как статические библиотеки в дереве сборки моего проекта.

Я создал библиотеку cmake, чтобы помочь с этим. protobuf - одна из первых поддерживаемых мной библиотек. Документация разрежена так либо не стесняйтесь задавать вопросы или просто узнать из кода в файле cmake/require_protobuf.cmake

библиотеки здесь: https://github.com/madmongo1/sanity

Если вы чувствуете, как вклад, я был бы признателен.

Вы увидите, что скрипт выполняет 2 сборки. Один, чтобы построить protoc на машине сборки, а затем построить библиотеки protobuf для целевой машины.