Слияние кода завершено, страница обновится автоматически
cmake_minimum_required(VERSION 2.8)
project(jetson-inference)
# предупреждение о подмодуле
message(" ")
message("Примечание: этот проект использует подмодули git в структуре исходного кода.")
message(" если вы еще не сделали этого, выполните следующую команду из")
message(" корневой директории проекта:")
message(" ")
message(" git submodule update --init")
message("\n")
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/utils/.git")
message("Примечание: необходимые подмодули git не обнаружены.")
message(" сначала выполните следующую команду из корневой директории проекта:")
message(" ")
message(" git submodule update --init")
message(" ")
message(FATAL_ERROR "необходимые подмодули git отсутствуют, см. инструкции выше")
endif()
# настройка параметров сборки
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-write-strings -Wno-deprecated-declarations") # -std=c++14
set(BUILD_DEPS "YES" CACHE BOOL "Если YES, установит зависимости в песочницу. Автоматически сбрасывается в NO после установки зависимостей.")
set(BUILD_INTERACTIVE "YES" CACHE BOOL "Если NO, загрузит/установит стандартные модели DNN без запроса пользователя и пропустит установку PyTorch.")
set(BUILD_EXPERIMENTAL "NO" CACHE BOOL "Если YES, включит поддержку экспериментальных DNN, примеров и плагинов")
# копирование конфигурационных инструментов в директорию сборки
file(COPY "tools/download-models.sh" DESTINATION ${PROJECT_BINARY_DIR})
file(COPY "tools/download-models.rc" DESTINATION ${PROJECT_BINARY_DIR})
file(COPY "tools/install-pytorch.sh" DESTINATION ${PROJECT_BINARY_DIR})
file(COPY "tools/install-pytorch.rc" DESTINATION ${PROJECT_BINARY_DIR})# Если это первое выполнение CMake, запустить скрипт установки зависимостей перед сборкой (или если пользователь вручную перезапускает сборку зависимостей)
if(${BUILD_DEPS})
message("-- Запуск скрипта установки зависимостей перед сборкой...")
message("-- Интерактивная сборка: ${BUILD_INTERACTIVE}")
execute_process(COMMAND sh ../CMakePreBuild.sh ${BUILD_INTERACTIVE}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
RESULT_VARIABLE PREBUILD_SCRIPT_RESULT)
set(BUILD_DEPS "NO" CACHE BOOL "Если YES, установит зависимости в песочницу. Автоматически сбрасывается в NO после установки зависимостей." FORCE)
message("-- Завершена установка зависимостей")
endif()# Настройка CUDA
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/utils/cuda" )
find_package(CUDA)
message("-- Версия CUDA: ${CUDA_VERSION}")
set(
CUDA_NVCC_FLAGS
${CUDA_NVCC_FLAGS};
-O3
-gencode arch=compute_53,code=sm_53
-gencode arch=compute_62,code=sm_62
)
if(CUDA_VERSION_MAJOR GREATER 9)
message("-- Обнаружена версия CUDA ${CUDA_VERSION_MAJOR}, включение SM_72")
set(
CUDA_NVCC_FLAGS
${CUDA_NVCC_FLAGS};
-gencode arch=compute_72,code=sm_72
)
endif()
# Настройка путей вывода проекта
set(PROJECT_OUTPUT_DIR ${PROJECT_BINARY_DIR}/${CMAKE_SYSTEM_PROCESSOR})
set(PROJECT_INCLUDE_DIR ${PROJECT_OUTPUT_DIR}/include)
file(MAKE_DIRECTORY ${PROJECT_INCLUDE_DIR})
file(MAKE_DIRECTORY ${PROJECT_OUTPUT_DIR}/bin)
message("-- Архитектура системы: ${CMAKE_SYSTEM_PROCESSOR}")
message("-- Путь вывода: ${PROJECT_OUTPUT_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_OUTPUT_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_OUTPUT_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_OUTPUT_DIR}/lib)
# Сборка библиотеки C/C++
include_directories(${PROJECT_INCLUDE_DIR} ${PROJECT_INCLUDE_DIR}/jetson-inference ${PROJECT_INCLUDE_DIR}/jetson-utils)
include_directories(/usr/include/gstreamer-1.0 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/include /usr/include/glib-2.0 /usr/include/libxml2 /usr/lib/aarch64-linux-gnu/glib-2.0/include/)file(GLOB inferenceSources "c/*.cpp" "c/*.cu" "calibration/*.cpp")
file(GLOB inferenceIncludes "c/*.h" "c/*.cuh" "calibration/*.h")
if(BUILD_EXPERIMENTAL)
message("-- BUILD_EXPERIMENTAL включен")
# OpenCV используется для findHomography() и decomposeHomography()
# Требуется версия OpenCV >= Yöntem 3.0.0 для decomposeHomography()
find_package(OpenCV COMPONENTS core calib3d)
if(NOT OpenCV_FOUND)
message("-- OpenCV не найден на системе, отключение OpenCV")
else()
message("-- Версия OpenCV: " ${OpenCV_VERSION})
if(${OpenCV_VERSION_MAJOR} LESS 3)
message("-- Версия OpenCV меньше 3.0, отключение OpenCV")
else()
message("-- Версия OpenCV >= 3.0.0, включение OpenCV")
set(HAS_OPENCV 1)
add_definitions(-DHAS_OPENCV)
endif()
endif()
file(GLOB experimentalSources "c/experimental/*.cpp" "c/experimental/*.cu")
file(GLOB experimentalIncludes "c/experimental/*.h" "c/experimental/*.cuh")
file(GLOB_RECURSE pluginSources "plugins/*.cpp" "plugins/*.cu")
list(APPEND inferenceSources ${experimentalSources})
list(APPEND inferenceIncludes ${experimentalIncludes})
else()
message("-- BUILD_EXPERIMENTAL отключен")
file(GLOB pluginSources "plugins/*.cpp" "plugins/*.cu" "plugins/pose/trt_pose/parse/*.cpp")
endif()
target_link_libraries(jetson-inference INTERFACE "/usr/lib/aarch64-linux-gnu/tegra")
cuda_add_library(jetson-inference SHARED ${inferenceSources} ${pluginSources})
target_include_directories(jetson-inference PRIVATE "${PROJECT_SOURCE_DIR}/plugins/pose/trt_pose/parse")
# Перенести все заголовочные файлы в каталог include
file(MAKE_DIRECTORY "${PROJECT_INCLUDE_DIR}/jetson-inference")
foreach(include ${inferenceIncludes})
message("-- Копирование ${include}")
configure_file("${include}" "${PROJECT_INCLUDE_DIR}/jetson-inference" COPYONLY)
endforeach()
#if(BUILD_EXPERIMENTAL)
#endif()# создать символическую ссылку для сети и изображений
выполнить_процесс( КОМАНДА "${CMAKE_COMMAND}" "-E" "create_symlink" "${PROJECT_SOURCE_DIR}/data/networks" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/networks" )
выполнить_процесс( КОМАНДА "${CMAKE_COMMAND}" "-E" "create_symlink" "${PROJECT_SOURCE_DIR}/data/images" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/images" )
Команды CLI и переменные оставлены без изменений, так как они являются частью кода и не требуют перевода.# копировать данные изображений (РЕДАКТИРОВАТЬ: теперь они являются символическими ссылками выше)
#file(GLOB imageData ${PROJECT_SOURCE_DIR}/data/images/*)
#foreach(image ${imageData})
# сообщение("-- Копирование ${image}")
# файл(COPY ${image} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# #configure_file(${include} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} COPYONLY)
#endforeach()
# сборка подкаталогов
добавить_подкаталог(docs)
добавить_подкаталог(examples)
добавить_подкаталог(tools)
добавить_подкаталог(utils)
добавить_подкаталог(python)
# установить опции связывания
цель_связать_библиотеки(jetson-inference jetson-utils nvinfer nvinfer_plugin nvcaffe_parser)
если(CUDA_VERSION_MAJOR БОЛЬШЕ 9)
цель_связать_библиотеки(jetson-inference nvonnxparser)
если(HAS_OPENCV)
сообщение("-- Связывание jetson-inference с OpenCV " ${OpenCV_VERSION})
цель_связать_библиотеки(jetson-inference opencv_core opencv_calib3d)
конецесли()
конецесли()
# установить включенные файлы
foreach(include ${inferenceIncludes})
установить(FILES "${include}" DESTINATION include/jetson-inference)
endforeach()
# установка символической ссылки на сети и изображения
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data/networks ${CMAKE_INSTALL_PREFIX}/bin/networks)")
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/data/images ${CMAKE_INSTALL_PREFIX}/bin/images)")
# установка общедоступной библиотеки
install(TARGETS jetson-inference DESTINATION lib EXPORT jetson-inferenceConfig)
# установка cmake-проекта для импорта
install(EXPORT jetson-inferenceConfig DESTINATION share/jetson-inference/cmake)
# запуск ldconfig после установки
install(CODE "execute_process(COMMAND ldconfig )")
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )