代码之家  ›  专栏  ›  技术社区  ›  Hind Forsum

cmake:“添加自定义目标”+预生成在生成时未生效

  •  0
  • Hind Forsum  · 技术社区  · 7 年前

     examples.proto
     client.cpp
     server.cpp
    

    我使用protoc命令为protobuf和grpc构建.cc/.h文件,CMakeLists.txt:

    cmake_minimum_required(VERSION 2.8)
    add_definitions(-std=c++11)
    include_directories(.)
    
    add_custom_target(protoFile
        PRE_BUILD
        COMMAND protoc --cpp_out=./ examples.proto
    )
    add_custom_target(protoSource
        PRE_BUILD
        COMMAND protoc --grpc_out=./ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_cpp_plugin examples.proto
    )
    add_dependencies(protoSource protoFile)
    
    add_library(protoCpp SHARED examples.grpc.pb.cc examples.pb.cc)
    add_dependencies(protoCpp protoSource)
    
    link_libraries(protoCpp protobuf grpc grpc++)
    add_executable(client client.cpp)
    add_executable(server server.cpp)
    

    然后:

    cmake .
    -- Configuring done
    CMake Error at CMakeLists.txt:15 (add_library):
    Cannot find source file:
    
        examples.grpc.pb.cc
    
    Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
    .hxx .in .txx
    
    
    CMake Error: CMake can not determine linker language for target: protoCpp
    CMake Error: Cannot determine link language for target "protoCpp".
    -- Generating done
    

    如何解决这个问题?

    0 回复  |  直到 7 年前
    推荐文章