2017-11-03 1 views
1

cmake로 windows에서 protobuf 3.9.4를 빌드하려고하는데 'configure'를 클릭하면 'LINK : 치명적인 오류 LNK1101 : 잘못된 MSPDB140'메시지가 나타납니다. DLL 버전; 이 제품의 설치를 다시 확인하십시오. 'buildproobuf 3.9.4 cmake가 포함 된 창에서

아무도 여기에 무슨 일이 일어나는지 아무도 모르십니까?

Visual Studio에서 뭔가 잘못되었지만 확실하지 않습니다.

나는 해결책을 찾기 위해 노력했지만 그들 중 누구도 내 문제와 관련이 없습니다.

P. 나는 guake 버전의 cmake를 사용하고 있습니다.

+0

'Visual Studio에서 뭔가 이상합니다. '- 가능합니다. 그리고 아마도 CMake와 protobuf 모두 ** 관련이 없습니다 **. – Tsyvarev

답변

2

vcpkg를 사용하여 Visual Studio 2017에서 protobuf 3.4.1을 빌드하는 데 필요한 CMake 스크립트 패치의 유용한 예제가 있습니다. 3.9.4 건물을 얻을

#region PDFsharp - A .NET library for processing PDF 
// 
// Authors: 
// Stefan Lange 
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt 
index 7618ba2..d282a60 100644 
--- a/cmake/CMakeLists.txt 
+++ b/cmake/CMakeLists.txt 
@@ -165,8 +165,10 @@ endif (protobuf_UNICODE) 

include(libprotobuf-lite.cmake) 
include(libprotobuf.cmake) 
-include(libprotoc.cmake) 
-include(protoc.cmake) 
+if(protobuf_BUILD_COMPILER) 
+ include(libprotoc.cmake) 
+ include(protoc.cmake) 
+endif() 

if (protobuf_BUILD_TESTS) 
    include(tests.cmake) 

diff --git a/cmake/install.cmake b/cmake/install.cmake 
index 441bf55..20b3aa0 100644 
--- a/cmake/install.cmake 
+++ b/cmake/install.cmake 
@@ -1,14 +1,17 @@ 
include(GNUInstallDirs) 

+set(LIBRARIES_TO_SET_DEST libprotobuf-lite libprotobuf) 
+if(protobuf_BUILD_COMPILER) 
+ list(APPEND LIBRARIES_TO_SET_DEST libprotoc) 
+endif() 
+ 
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/protobuf.pc.cmake 
       ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc @ONLY) 
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/protobuf-lite.pc.cmake 
       ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc @ONLY) 

foreach(_library 
- libprotobuf-lite 
- libprotobuf 
- libprotoc) 
+ ${LIBRARIES_TO_SET_DEST}) 
    set_property(TARGET ${_library} 
    PROPERTY INTERFACE_INCLUDE_DIRECTORIES 
    $<BUILD_INTERFACE:${protobuf_source_dir}/src> 
@@ -19,8 +22,10 @@ foreach(_library 
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${_library}) 
endforeach() 

-install(TARGETS protoc EXPORT protobuf-targets 
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT protoc) 
+if(protobuf_BUILD_COMPILER) 
+ install(TARGETS protoc EXPORT protobuf-targets 
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT protoc) 
+endif() 

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") 

@@ -101,7 +106,12 @@ configure_file(protobuf-options.cmake 
    ${CMAKE_INSTALL_CMAKEDIR}/protobuf-options.cmake @ONLY) 

# Allows the build directory to be used as a find directory. 
-export(TARGETS libprotobuf-lite libprotobuf libprotoc protoc 
+set(FIND_DIRS libprotobuf-lite libprotobuf) 
+if(protobuf_BUILD_COMPILER) 
+ list(APPEND FIND_DIRS libprotoc protoc) 
+endif() 
+ 
+export(TARGETS ${FIND_DIRS} 
    NAMESPACE protobuf:: 
    FILE ${CMAKE_INSTALL_CMAKEDIR}/protobuf-targets.cmake 
) 

대부분의 아마 가장 쉬운 방법은 protobuf 3.4.1 vcpkg port 원래 업그레이드하는 것입니다. vcpkg를 사용하여 C/C++ 포트를 구축 한 경험은 지금까지 긍정적이었습니다.

관련 문제