|
|
| find_package(protobuf CONFIG) |
|
|
| if(protobuf_FOUND) |
| set(PROTOBUF_FOUND ${protobuf_FOUND}) |
| set(PROTOBUF_VERSION ${protobuf_VERSION}) |
| else() |
| # fallback to system |
| find_package(Protobuf) |
| set(PROTOBUF_FOUND ${Protobuf_FOUND}) |
| set(PROTOBUF_VERSION ${Protobuf_VERSION}) |
| if(TARGET protobuf::protoc) |
| set_target_properties(protobuf::protoc PROPERTIES IMPORTED_LOCATION_RELEASE "${PROTOBUF_PROTOC_EXECUTABLE}") |
| endif() |
| endif() |
|
|
| if(PROTOBUF_FOUND) |
| if(DEFINED PROTOBUF_VERSION AND PROTOBUF_VERSION VERSION_GREATER_EQUAL 3.22) |
| set(CMAKE_CXX_STANDARD 17) |
| endif() |
|
|
| if(Protobuf_FOUND OR protobuf_MODULE_COMPATIBLE) |
| protobuf_generate_cpp(ONNX_PROTO_SRCS ONNX_PROTO_HDRS onnx.proto) |
| add_executable(onnx2ncnn onnx2ncnn.cpp ${ONNX_PROTO_SRCS} ${ONNX_PROTO_HDRS}) |
| target_include_directories(onnx2ncnn PRIVATE ${PROTOBUF_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) |
| target_link_libraries(onnx2ncnn PRIVATE ${PROTOBUF_LIBRARIES}) |
| else() |
| add_executable(onnx2ncnn onnx2ncnn.cpp onnx.proto) |
| target_include_directories(onnx2ncnn PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) |
| protobuf_generate(TARGET onnx2ncnn) |
| target_link_libraries(onnx2ncnn PRIVATE protobuf::libprotobuf) |
| endif() |
|
|
| # add all onnx2ncnn tool to a virtual project group |
| set_property(TARGET onnx2ncnn PROPERTY FOLDER "tools/converter") |
| ncnn_install_tool(onnx2ncnn) |
| else() |
| message(WARNING "Protobuf not found, onnx model convert tool won't be built") |
| endif() |
|
|