2012-04-04 7 views
16

मैं इसे उसी तरह मैं बढ़ावा के लिए इसे बनाया बनाने के लिए कोशिश कर रहा हूँ:लिनक्स पर सेमेक के माध्यम से google protobuf पुस्तकालयों को कैसे लिंक करें?

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}                       
) 

(कहीं यह googled) लेकिन खराब उत्पादन मिल गया:

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 

मैं इसे कैसे cmake साथ लिंक कर सकते हैं? या शायद मैं cmake का उपयोग कर .proto फ़ाइल संकलित भी कर सकते हैं?

उत्तर

25

आप CMake के FindProtobuf मॉड्यूल की कोशिश कर सकते:

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


अधिक जानकारी के लिए, चलाने

cmake --help-module FindProtobuf 
+2

इस उत्तर के लिए धन्यवाद। '$ {Boost_FILESYSTEM_LIBRARY}' और '$ {Boost_SYSTEM_LIBRARY} 'के बजाय आप' $ {Boost_LIBRARIES} 'का उपयोग कर सकते हैं। –