我嘗試編譯此項目:https://github.com/shaochuan/cmake-protobuf-example。我用msvc2015(x64)成功編譯了protobuf。檢查項目運行時沒有錯誤(所有結果:PASSED)。Protobuf:無法打開message.pb.h文件中的包含文件common.h
我設置在C進行項目,提供所有的路徑:
Protobuf_INCLUDE_DIR = C:/ TK/protobuf的-330/msvc2015_64 /安裝/包括 Protobuf_LIBRARY_DEBUG = C:/ TK/protobuf的-330/msvc2015_64 /install/lib/libprotobufd.lib Protobuf_LITE_LIBRARY_DEBUG = C:/TK/protobuf-330/msvc2015_64/install/lib/libprotobuf-lited.lib Protobuf_PROTOC_EXECUTABLE = C:/ TK/protobuf-330/msvc2015_64/install/bin/protoc .EXE Protobuf_PROTOC_LIBRARY_DEBUG = C:/TK/protobuf-330/msvc2015_64/install/lib/libprotocd.lib Protobuf_SRC_ROOT_FOLDER = C:\ TK \ SRC \ protobuf的-330 \ SRC
原型項目編譯沒有任何錯誤。它包含message.cc和message.h文件。該的CMakeLists.txt看起來是這樣的:
INCLUDE(FindProtobuf)
FIND_PACKAGE(Protobuf REQUIRED)
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
PROTOBUF_GENERATE_CPP(PROTO_SRC PROTO_HEADER message.proto)
ADD_LIBRARY(proto ${PROTO_HEADER} ${PROTO_SRC})
如果我編譯下面的CMakeLists.txt主要項目:
PROJECT(rpc)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
ADD_SUBDIRECTORY(proto)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
ADD_EXECUTABLE(main main.cpp)
TARGET_LINK_LIBRARIES(main proto ${PROTOBUF_LIBRARY})
如果我建立這個C1083發生說法錯誤:
"Cannot open include file: 'google/protobuf/stubs/common.h': No such file or directory" c:\tktest\protobuftest\src\proto\message.pb.h
在文件中的錯誤行是:
#include <google/protobuf/stubs/common.h>
我想不通哪裏出了問題。一些提示表示讚賞。有沒有關於cmake + protobuf + visual studio 2015的一些已知問題? 在此先感謝。
感謝Macxx和烏托邦。我將兩個建議的行添加到了proto-project CMakeLists.txt的末尾,並將兩個項目的項目屬性更改爲「多線程調試(/ MTd)」。現在它起作用了。仍然可以找出問題所在。歡迎任何建議。 – KabCode