cmake_minimum_required(VERSION 3.12) project(ONNXInference) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找ONNX Runtime find_path(ONNXRUNTIME_ROOT_PATH NAMES include/onnxruntime_cxx_api.h HINTS /usr/local /usr ${CMAKE_SOURCE_DIR}/onnxruntime PATHS /usr/local /usr DOC "ONNX Runtime root directory") if(NOT ONNXRUNTIME_ROOT_PATH) message(FATAL_ERROR "ONNX Runtime not found. Please install ONNX Runtime or set ONNXRUNTIME_ROOT_PATH") endif() # 设置ONNX Runtime的包含目录和库目录 set(ONNXRUNTIME_INCLUDE_DIRS ${ONNXRUNTIME_ROOT_PATH}/include) # 查找库文件 find_library(ONNXRUNTIME_LIB NAMES onnxruntime libonnxruntime.so libonnxruntime.dylib onnxruntime.dll HINTS ${ONNXRUNTIME_ROOT_PATH}/lib ${ONNXRUNTIME_ROOT_PATH}/lib/x64 ${ONNXRUNTIME_ROOT_PATH}/lib64 /usr/local/lib /usr/lib/x86_64-linux-gnu DOC "ONNX Runtime library") if(NOT ONNXRUNTIME_LIB) message(FATAL_ERROR "ONNX Runtime library not found") endif() # 打印找到的路径信息 message(STATUS "ONNX Runtime root path: ${ONNXRUNTIME_ROOT_PATH}") message(STATUS "ONNX Runtime include path: ${ONNXRUNTIME_INCLUDE_DIRS}") message(STATUS "ONNX Runtime library: ${ONNXRUNTIME_LIB}") # 创建主库 add_library(onnx_inference onnx_inference.cpp onnx_inference.h ) # 设置包含目录 target_include_directories(onnx_inference PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${ONNXRUNTIME_INCLUDE_DIRS} ) # 链接ONNX Runtime库 target_link_libraries(onnx_inference ${ONNXRUNTIME_LIB} ) # 设置编译器特定选项 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") target_compile_options(onnx_inference PRIVATE -Wall -Wextra) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") target_compile_options(onnx_inference PRIVATE /W4) endif() # 创建示例程序 add_executable(example example.cpp) target_link_libraries(example onnx_inference) # 安装规则 install(TARGETS onnx_inference LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin ) install(FILES onnx_inference.h DESTINATION include ) # 可选:创建pkg-config文件 configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/onnx_inference.pc.in ${CMAKE_CURRENT_BINARY_DIR}/onnx_inference.pc @ONLY ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/onnx_inference.pc DESTINATION lib/pkgconfig )