ncnn / tools /onnx /CMakeLists.txt
camenduru's picture
thanks to ncnn ❤
be903e2
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()