2012-04-04 5 views
16

Ich versuche, es genauso machen ich es für Schub gemacht:Wie verlinke ich Google Protobuf-Bibliotheken über cmake auf Linux?

find_package(Boost COMPONENTS system filesystem REQUIRED)              
find_package(ProtocolBuffers)                     

## Compiler flags                        
if(CMAKE_COMPILER_IS_GNUCXX)                     
    set(CMAKE_CXX_FLAGS "-O2")                    
    set(CMAKE_EXE_LINKER_FLAGS "-lsqlite3 -lrt -lpthread")             
endif()                          

target_link_libraries(complex                     
    ${Boost_FILESYSTEM_LIBRARY}                     
    ${Boost_SYSTEM_LIBRARY}                      
    ${PROTOBUF_LIBRARY}                       
) 

(gegoogelt es irgendwo) bekam aber schlechte Leistung:

CMake Warning at complex/CMakeLists.txt:18 (find_package): 
    Could not find module FindProtocolBuffers.cmake or a configuration file for 
    package ProtocolBuffers. 

    Adjust CMAKE_MODULE_PATH to find FindProtocolBuffers.cmake or set 
    ProtocolBuffers_DIR to the directory containing a CMake configuration file 
    for ProtocolBuffers. The file will have one of the following names: 

    ProtocolBuffersConfig.cmake 
    protocolbuffers-config.cmake 

Wie kann ich es verbinden mit cmake? oder vielleicht kann ich sogar .proto file mit cmake kompilieren?

Antwort

25

Sie könnten versuchen, FindProtobuf Moduls CMake:

include(FindProtobuf) 
find_package(Protobuf REQUIRED) 
include_directories(${PROTOBUF_INCLUDE_DIR}) 
... 
target_link_libraries(complex 
    ${Boost_FILESYSTEM_LIBRARY} 
    ${Boost_SYSTEM_LIBRARY} 
    ${PROTOBUF_LIBRARY} 
) 


Für weitere Informationen, laufen

cmake --help-module FindProtobuf 
+2

Sie für diese Antwort danken. Anstelle von '$ {Boost_FILESYSTEM_LIBRARY}' und '$ {Boost_SYSTEM_LIBRARY}' können Sie '$ {Boost_LIBRARIES}' verwenden. –

Verwandte Themen