Слияние кода завершено, страница обновится автоматически
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
###############################################################################
# Определение CMake.
cmake_minimum_required(VERSION 3.14...4.0)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/utils
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/macros
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/modules
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/modules/install
)
set(CMAKE_WARN_DEPRECATED ON)
if(APPLE AND NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
# The value of this variable should be set before the first call to the project() command
# because it can affect the configuration of the toolchain and flags.
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum deployment target for OS X")
endif()
###############################################################################
# Определение проекта.
project(OpenColorIO
VERSION 2.5.0
DESCRIPTION "OpenColorIO (OCIO) — это полное решение для управления цветом"
HOMEPAGE_URL https://github.com/AcademySoftwareFoundation/OpenColorIO
LANGUAGES CXX C)
# "dev", "beta1", "rc1", and so on, or "" for an official release.
set(OpenColorIO_VERSION_RELEASE_TYPE "dev")
###############################################################################
# ctest
# To enable proper generation of DartConfiguration.tcl, include the CMake file for CTest.
# This way 'ctest -F memcheck' will work.
include (CTest)
enable_testing()
###############################################################################
# Предоставляет переменные каталога установки, как определено стандартами GNU Coding.
include(GNUInstallDirs)
###############################################################################
# Запрещает сборку в исходной директории.```cmake
if(${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR})
message(FATAL_ERROR
"Сборка в исходной директории не разрешена. Пожалуйста, создайте поддиректорию и запустите CMake из неё.")
endif()
###############################################################################
# Глобальные опции CMake.
# Не выводить сообщения об установке.
if(NOT DEFINED CMAKE_INSTALL_MESSAGE)
set(CMAKE_INSTALL_MESSAGE "NEVER")
endif()
# Изменить максимальный размер пути, чтобы избежать проблем на Windows.
if(NOT DEFINED CMAKE_OBJECT_PATH_MAX)
set(CMAKE_OBJECT_PATH_MAX 300)
endif()
###############################################################################
# Определение режима компиляции, т.е. отладочного или релизного
if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
message(STATUS "Установка типа сборки на 'Release', так как не был указан ни один.")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Выберите тип сборки." FORCE)
endif()
# Список всех допустимых типов сборки.
if(NOT DEFINED CMAKE_CONFIGURATION_TYPES)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo" CACHE STRING "" FORCE)
mark_as_advanced(CMAKE_CONFIGURATION_TYPES)
endif()
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
# Это допустимый тип сборки?
set(_build_type_valid_ false)
foreach (_build_type_ ${CMAKE_CONFIGURATION_TYPES})
string(TOLOWER ${_build_type_} _lowercase_build_type_)
string(TOLOWER ${CMAKE_BUILD_TYPE} _lowercase_cmake_build_type_)
if (_lowercase_cmake_build_type_ STREQUAL _lowercase_build_type_)
# Тип сборки поддерживается.
set(_build_type_valid_ true)
break()
endif()
endforeach()
unset(_lowercase_build_type_)
unset(_lowercase_cmake_build_type_)
```if (NOT _build_type_valid_)
string(REPLACE ";" ", " _CMAKE_CONFIGURATION_TYPES_STR "${CMAKE_CONFIGURATION_TYPES}")
message(FATAL_ERROR
"CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} не поддерживается. Поддерживаемые значения: ${_CMAKE_CONFIGURATION_TYPES_STR}.")
endif()
unset(_build_type_valid_)# Это режим отладки?
set(_BUILD_TYPE_DEBUG OFF)
if(CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]")
set(_BUILD_TYPE_DEBUG ON)
endif()
set(BUILD_TYPE_DEBUG ${_BUILD_TYPE_DEBUG})
###############################################################################
# Конфигурация версии C++
include(Compilers)
include(CppVersion)
###############################################################################
# Компоненты для сборки
option(BUILD_SHARED_LIBS "Установите в OFF для сборки статических библиотек" ON)
option(OCIO_BUILD_APPS "Установите в OFF для отключения командных строковых приложений" ON)
option(OCIO_BUILD_OPENFX "Укажите, следует ли собирать плагины OpenFX" OFF)
option(OCIO_BUILD_NUKE "Укажите, следует ли собирать плагины для Nuke" OFF)
option(OCIO_BUILD_TESTS "Укажите, следует ли собирать юнит-тесты" ON)
option(OCIO_BUILD_GPU_TESTS "Укажите, следует ли собирать юнит-тесты для GPU" ON)
option(OCIO_USE_HEADLESS "Укажите, следует ли использовать безголовое отображение GPU" OFF)
option(OCIO_BUILD_FROZEN_DOCS "Указывает, нужно ли строить замороженную документацию, необходимую при изменении публичного API OCIO" OFF)
option(OCIO_BUILD_DOCS "Указывает, нужно ли строить документацию" ${OCIO_BUILD_FROZEN_DOCS})
option(OCIO_BUILD_PYTHON "Указывает, нужно ли строить связки Python" ON)
set(OCIO_PYTHON_VERSION "" CACHE STRING
"Предпочтительная версия Python (если таковая имеется), в случае наличия нескольких версий")
option(OCIO_BUILD_JAVA "Указывает, нужно ли строить связки Java" OFF)
if (WIN32)
option(OCIO_USE_WINDOWS_UNICODE "Сборка с поддержкой Windows Unicode" ON)
endif()###############################################################################
# Другие настройки
опция(OCIO_VERBOSE "Отображение дополнительной информации при поиске или установке зависимостей" ВЫКЛ)
опция(OCIO_USE_SOVERSION "Включение версионирования в имя общедоступной библиотеки OCIO" ВКЛ)
###############################################################################
# Настройки предупреждений / отладки
опция(OCIO_WARNING_AS_ERROR "Установка уровня ошибки сборки для тестирования CI" ВЫКЛ)
если (NOT WIN32)
опция(OCIO_ENABLE_SANITIZER "Указывает, нужно ли включать санитайзеры компилятора (адрес)" ВЫКЛ)
конец()
###############################################################################
# Настройки предпочтений оптимизации / внутренней связиопция(OCIO_USE_SIMD "Указывает, нужно ли включать оптимизации производительности процессора SIMD" ВКЛ)
опция(OCIO_USE_OIIO_FOR_APPS "Запрос OIIO на сборку приложений (ociolutimage, ocioconvert и ociodisplay), по умолчанию используется OpenEXR." ВЫКЛ)
```cmake
если (NOT APPLE)
если("${CMAKE_GENERATOR_PLATFORM}" ПОДХОДИТ "(ARM64|arm64)" ИЛИ CMAKE_SYSTEM_PROCESSOR РАВНО "ARM64")
установить(OCIO_ARCH_X86 0)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ВКЛЮЧЕНО)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ВЫКЛЮЧЕНО)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ВЫКЛЮЧЕНО)
ИЛИ если ("${CMAKE_SYSTEM_PROCESSOR}" ПОДХОДИТ "(AMD64|IA64|EM64T|x86_ Yöntem 64|X86|i386|i686)")
# Архитектура на основе Intel (не APPLE)
если ("${CMAKE_SYSTEM_PROCESSOR}" ПОДХОДИТ "(X86|i386|i686)")
установить(OCIO_ARCH_X86_32 1)
конец_если()
установить(OCIO_ARCH_X86 1)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ВКЛЮЧЕНО)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ВКЛЮЧЕНО)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ВКЛЮЧЕНО)
конец_если()
ИНАЧЕ
установить(OCIO_ARCH_X86 0)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ВЫКЛЮЧЕНО)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ВЫКЛЮЧЕНО)
установить(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ВЫКЛЮЧЕНО)
конец_если()
ИНАЧЕ если (APPLE)
# Множество возможных сценариев:
# A. Сборка на архитектуре Apple arm64 для собственной архитектуры (arm64).
# B. Сборка на архитектуре Apple arm64 для x86_64.
# C. Сборка на архитектуре Apple arm64 для универсальных бинарников (x86_64 + arm64).
#
# D. Сборка на архитектуре Apple Intel для собственной архитектуры (x86_64).
# E. Сборка на архитектуре Apple Intel для универсальных бинарников (x86_64 + arm64).
#
# F. Сборка на архитектуре Apple Intel для x86_64.
# G. Сборка на архитектуре Apple Intel для arm64.
#
# H. Сборка на архитектуре Apple arm64 для x86_64.
# I. Сборка на архитектуре Apple arm64 для arm64.
#
# J. Сборка на архитектуре Apple Intel для x86_64.
# K. Сборка на архитектуре Apple Intel для arm64.
#
# L. Сборка на архитектуре Apple arm64 для x86_64.
# M. Сборка на архитектуре Apple arm64 для arm64.
#
# N. Сборка на архитектуре Apple Intel для x86_64.
# O. Сборка на архитектуре Apple Intel для arm64.
#
# P. Сборка на архитектуре Apple arm64 для x86_64.
# Q. Сборка на архитектуре Apple arm64 для arm64.
#
# R. Сборка на архитектуре Apple Intel для x86_64.
# S. Сборка на архитектуре Apple Intel для arm64.
#
# T. Сборка на архитектуре Apple arm64 для x86_64.
# U. Сборка на архитектуре Apple arm64 для arm64.
#
# V. Сборка на архитектуре Apple Intel для x86_64.
# W. Сборка на архитектуре Apple Intel для arm64.
#
# X. Сборка на архитектуре Apple arm64 для x86_64.
# Y. Сборка на архитектуре Apple arm64 для arm64.
#
# Z. Сборка на архитектуре Apple Intel для x86_64.
# AA. Сборка на архитектуре Apple Intel для arm64.
#
# AB. Сборка на архитектуре Apple arm64 для x86_64.
# AC. Сборка на архитектуре Apple arm64 для arm64.
#
# AD. Сборка на архитектуре Apple Intel для x86_64.
# AE. Сборка на архитектуре Apple Intel для arm64.
#
# AF. Сборка на архитектуре Apple arm64 для x86_64.
# AG. Сборка на архитектуре Apple arm64 для arm64.
#
# AH. Сборка на архитектуре Apple Intel для x86_64.
# AI. Сборка на архитектуре Apple Intel для arm64.
#
# AJ. Сборка на архитектуре Apple arm64 для x86_64.
# AK. Сборка на архитектуре Apple arm64 для arm64.
#
# AL. Сборка на архитектуре Apple Intel для x86_64.
# AM. Сборка на архитектуре Apple Intel для arm64.
#
# AN. Сборка на архитектуре Apple arm64 для x86_64.
# AO. Сборка на архитектуре Apple arm64 для arm64.
#
# AP. Сборка на архитектуре Apple Intel для x86_64.
# AQ. Сборка на архитектуре Apple Intel для arm64.
#
# AR. Сборка на архитектуре Apple arm64 для x86_64.
# AS. Сборка на архитектуре Apple arm64 для arm64.
#
# AT. Сборка на архитектуре Apple Intel для x86_64.
# AU. Сборка на архитектуре Apple Intel для arm64.
#
# AV. Сборка на архитектуре Apple arm64 для x86_64.
# AW. Сборка на архитектуре Apple arm64 для arm64.
#
# AX. Сборка на архитектуре Apple Intel для x86_64.
# AY. Сборка на архитектуре Apple Intel для arm64.
#
# AZ. Сборка на архитектуре Apple arm64 для x86_64.
# BA. Сборка на архитектуре Apple arm64 для arm64.
#
# BB. Сборка на архитектуре Apple Intel для x86_64.
# BC. Сборка на архитектуре Apple Intel для arm64.
#
# BD. Сборка на архитектуре Apple arm64 для x86_64.
# BE. Сборка на архитектуре Apple arm64 для arm64.
#
# BF. Сборка на архитектуре Apple Intel для x86_64.
# BG. Сборка на архитектуре Apple Intel для arm64.
#
# BH. Сборка на архитектуре Apple arm64 для x86_64.
# BI. Сборка на архитектуре Apple arm64 для arm64.
#
# BJ. Сборка на архитектуре Apple Intel для x86_64.
# BK. Сборка на архитектуре Apple Intel для arm64.
#
# BL. Сборка на архитектуре Apple arm64 для x86_64.
# BM. Сборка на архитектуре Apple arm64 для arm64.
#
# BN. Сборка на архитектуре Apple Intel для x86_64.
# BO. Сборка на архитектуре Apple Intel для arm64.
#
# BP. Сборка на архитектуре Apple arm64 для x86_64.
# BQ. Сборка на архитектуре Apple arm64 для arm64.
#
# BR. Сборка на архитектуре Apple Intel для x86_64.
# BS. Сборка на архитектуре Apple Intel для arm64.
#
# BT. Сборка на архитектуре Apple arm64 для x86_64.
# BU. Сборка на архитектуре Apple arm64 для arm64.
#
# BV. Сборка на архитектСборка на архитектуре Apple Intel для arm64.
# F. Сборка на архитектуре Apple Intel для универсальных бинарников (x86_64 + arm64).
```
# Проверка, что мы НЕ кросс-компилируем для другой архитектуры Apple.
if (NOT DEFINED CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL "")
# Компиляция для архитектур по умолчанию.
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
# Компьютер Apple на базе Intel или Rosetta. (покрывает случай D)
``` set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# AVX и F16C будут скомпилированы, но не будут использованы в реальном времени Rosetta.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
# Apple arm64. (покрывает случай A)
set(OCIO_ARCH_X86 0)
# OCIO переводит инструкции SSE в ARM Neon с помощью библиотеки SSE2NEON.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# OCIO не переводит AVX в ARM Neon.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
# Отключаем F16C, так как это инструкции x86_64.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
endif()
else()
# Кросс-компиляция для другой архитектуры Apple (x86_64, arm64 или обе (универсальная))
if ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
# Компиляция для x86_64, независимо от архитектуры по умолчанию.
# Покрывает случай B, предполагая, что CMAKE_SYSTEM_PROCESSOR равен arm64.
# Покрывает случай D, если CMAKE_OSX_ARCHITECTURES установлен на x86_64 на архитектуре x86_64.
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# AVX и F16C будут скомпилированы, но не будут использованы в реальном времени Rosetta.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
elseif ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
# Компиляция для arm64, независимо от архитектуры по умолчанию.
# Покрывает случай E, предполагая, что CMAKE_SYSTEM_PROCESSOR равен x86_64.
# Покрывает случай A, если CMAKE_OSX_ARCHITECTURES установлен на arm64 на архитектуре arm64. set(OCIO_ARCH_X86 0)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
elseif ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "(arm64;x86_64|x86_64;arm64)")
# Универсальная компиляция (покрывает случаи C и F).
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# AVX и F16C будут скомпилированы, но не будут использоваться в режиме выполнения в Rosetta.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
endif()
endif()
endif()option(OCIO_USE_SSE2 "Укажите, следует ли включить оптимизации производительности процессора SSE2" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE3 "Укажите, следует ли включить оптимизации производительности процессора SSE3" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSSE3 "Укажите, следует ли включить оптимизации производительности процессора SSSE3" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE4 "Укажите, следует ли включить оптимизации производительности процессора SSE4" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE42 "Укажите, следует ли включить оптимизации производительности процессора SSE4.2" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_AVX "Укажите, следует ли включить оптимизации производительности процессора AVX" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_AVX2 "Укажите, следует ли включить оптимизации производительности процессора AVX2" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_AVX512 "Укажите, следует ли включить оптимизации производительности процессора AVX512" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_F16C "Укажите, следует ли включить оптимизации производительности процессора F16C" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C})if (APPLE OR WIN32)
# TODO: Пересмотреть, требуется ли это определение.
option(OCIO_USE_SSE2NEON "Укажите, следует ли включить оптимизации производительности процессора SSE с использованием SSE2NEON для архитектуры Apple ARM" ON)
mark_as_advanced(OCIO_USE_SSE2NEON)
endif()
###############################################################################
# Настройка GPU
message(STATUS "")
message(STATUS "Проверка настроек GPU...")
include(CheckSupportGL)
###############################################################################
# Проверка ARM NEON здесь, так как нам нужно знать, поддерживается ли ARM NEON, быстро.
# Как только мы узнаем, что ARM NEON поддерживается, мы можем добавить библиотеку sse2neon в сборку.
if(OCIO_USE_SIMD)
include(CheckSupportARMNeon)
if (NOT COMPILER_SUPPORTS_ARM_NEON)
# Вынуждаем его в OFF, так как ARM NEON не поддерживается.
set(OCIO_USE_SSE2NEON OFF)
endif()
endif()
###############################################################################
# Добавьте sse2neon в сборку, если поддерживаются ARM NEON интринсики.
if(OCIO_USE_SIMD AND OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON)
# Установите sse2neon. Пожалуйста, обратите внимание, что sse2neon загружается во время этапа конфигурации, так как он необходим для CompilerFlags.cmake и CheckSupportSSEUsingSSE2NEON.cmake.
# Sse2neon не рассматривается как импортированный целевой объект. Логика поиска sse2neon находится здесь, так как модуль поиска не подходит для случая использования sse2neon.
find_path(sse2neon_INCLUDE_DIR
NAMES
sse2neon.h
HINTS
${sse2neon_ROOT}
PATH_SUFFIXES
sse2neon
include
sse2neon/include
) # В соответствии с инструкциями на странице GitHub sse2neon, следующие флаги компилятора должны использоваться: "-march=armv8-a+fp+simd+crypto+crc". Эти флаги необходимы для некоторых платформ ARM, которые по умолчанию не включают вычисления с плавающей запятой или инструкции SIMD. Однако для ARM64 (платформа Apple ARM) и x86_64 платформы эти возможности уже включены по умолчанию. Поэтому дополнительные флаги компилятора не требуются.
if (NOT sse2neon_INCLUDE_DIR)
include(Installsse2neon)
else()
# Любые изменения в следующих строках должны быть повторены в Installsse2neon.cmake.
# Создайте целевой объект для sse2neon (не импортированный)
add_library(sse2neon INTERFACE)
# Добавьте каталоги включений в целевой объект.
target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}")
if(NOT MSVC)
# Игнорируйте предупреждения, исходящие от sse2neon.h, так как они являются ложноположительными.
target_compile_options(sse2neon INTERFACE -Wno-unused-parameter)
endif()
endif()
endif()
###############################################################################
# Определите флаги компиляции и линковки
include(CompilerFlags)
###############################################################################
# Внешние опции линковки
# Поддерживаемые опции
set(_EXT_OPTIONS NONE MISSING ALL)
string(REPLACE ";" ", " _EXT_OPTIONS_STR "${_EXT_OPTIONS}")# Значение по умолчанию
set(_OCIO_INSTALL_EXT_PACKAGES "MISSING")```cmake
if(DEFINED OCIO_INSTALL_EXT_PACKAGES)
# Case insensitive match
string(TOUPPER "${OCIO_INSTALL_EXT_PACKAGES}" _OCIO_INSTALL_EXT_PACKAGES)
if(NOT "${_OCIO_INSTALL_EXT_PACKAGES}" IN_LIST _EXT_OPTIONS)
message(FATAL_ERROR
"OCIO_INSTALL_EXT_PACKAGES=${OCIO_INSTALL_EXT_PACKAGES} не поддерживается. Поддерживаемые значения: ${_EXT_OPTIONS_STR}.")
endif()
endif()```# Перезапись переменной кэша с нормализованным регистром
set(OCIO_INSTALL_EXT_PACKAGES "${_OCIO_INSTALL_EXT_PACKAGES}" CACHE STRING
"Устанавливает условие для установки внешних зависимостей" FORCE)
set_property(CACHE OCIO_INSTALL_EXT_PACKAGES PROPERTY STRINGS ${_EXT_OPTIONS})
###############################################################################
# Версионирование
if(NOT DEFINED SOVERSION)
set(SOVERSION "${OpenColorIO_VERSION_MAJOR}.${OpenColorIO_VERSION_MINOR}" CACHE STRING
"Устанавливает версию SO в имени SO выходной библиотеки")
message(STATUS "Установка SOVERSION на '${SOVERSION}' так как не было указано.")
elseif(SOVERSION STREQUAL "")
message(FATAL_ERROR "Версия SOVERSION не может быть пустой.")
endif()
###############################################################################
# Пространство имен
if(NOT DEFINED OCIO_NAMESPACE)
set(OCIO_NAMESPACE "OpenColorIO_v${OpenColorIO_VERSION_MAJOR}_${OpenColorIO_VERSION_MINOR}${OpenColorIO_VERSION_RELEASE_TYPE}" CACHE STRING
"Указывает основное пространство имен OCIO C++: варианты включают OpenColorIO OpenColorIO_<YOURFACILITY> и т.д.")
elseif(OCIO_NAMESPACE STREQUAL "")
message(FATAL_ERROR "Пространство имен не может быть пустым.")
else()
set(OCIO_NAMESPACE "OpenColorIO_${OCIO_NAMESPACE}_v${OpenColorIO_VERSION_MAJOR}_${OpenColorIO_VERSION_MINOR}${OpenColorIO_VERSION_RELEASE_TYPE}" CACHE STRING
"Указывает основное пространство имен OCIO C++: варианты включают OpenColorIO OpenColorIO_<YOURFACILITY> и т.д.")
message(STATUS "Установка пространства имен на '${OCIO_NAMESPACE}' так как не было указано.")
endif()###############################################################################
# Пользовательский суффикс имени библиотеки
# Это помогает приложению, которое должно отправить динамическую библиотеку OCIO,
# убедиться, что у неё есть уникальное имя, которое не будет конфликтовать с другим
# на системе.set (OCIO_LIBNAME_SUFFIX "" CACHE STRING
"Specifies the suffix for all created libraries")
```###############################################################################
# Error checking
if(OCIO_BUILD_SHARED AND OCIO_BUILD_STATIC)
message(FATAL_ERROR
"Deprecated options OCIO_BUILD_SHARED and OCIO_BUILD_STATIC cannot be used simultaneously")
endif()
if(OCIO_BUILD_SHARED)
message(DEPRECATION
"Option OCIO_BUILD_SHARED is deprecated. Please use the standard CMake BUILD_SHARED_LIBS=ON (default ON)")
if(NOT BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS ON)
endif()
endif()
if(OCIO_BUILD_STATIC)
message(DEPRECATION
"Option OCIO_BUILD_STATIC is deprecated. Please use the standard CMake BUILD_SHARED_LIBS=OFF (default ON)")
if(BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS OFF)
endif()
endif()
if (NOT BUILD_SHARED_LIBS AND NOT OCIO_INSTALL_EXT_PACKAGES STREQUAL NONE)
message(STATUS "Note that building a static version of OpenColorIO does not include dependencies
in the library file. Required dependencies must be linked with the consumer
application or accompanying library using a static OpenColorIO.
The following required dependencies MUST be linked with the consumer application or accompanying library:
expat, yaml-cpp, Imath, pystring, minizip-ng and ZLIB")
endif()###############################################################################
# Поиск или установка внешних зависимостей
# Некоторые необходимые цели могут быть созданы сторонними разработчиками с помощью конфигураций CMake, которые
# обычно не создают глобальные цели. Чтобы гарантировать, что все импортированные цели являются глобальными,
# этот модуль включается на уровне корневого проекта.include(FindExtPackages)
###############################################################################
# Передача к другим источникам
add_subdirectory(vendor)
if(OCIO_BUILD_DOCS)
add_subdirectory(docs)
endif()
add_subdirectory(tests)
add_subdirectory(src)
add_subdirectory(ext)
###############################################################################
# Настройка скрипта окружения
if(WIN32)
set(OCIO_SETUP_NAME setup_ocio.bat)
else()
set(OCIO_SETUP_NAME setup_ocio.sh)
endif()
configure_file(${PROJECT_SOURCE_DIR}/share/ocio/${OCIO_SETUP_NAME}.in
${CMAKE_CURRENT_BINARY_DIR}/share/ocio/${OCIO_SETUP_NAME} @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/ocio/${OCIO_SETUP_NAME} DESTINATION ${CMAKE_INSTALL_DATADIR}/ocio/)
###############################################################################
# Генерация OpenColorIO-config.cmake
# Цели, экспортированные в ${PROJECT_NAME}_EXPORTED_TARGETS, будут доступны для
# импорта с помощью find_package(OpenColorIO).
include(CMakePackageConfigHelpers)
set(OCIO_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets.cmake")
set(OCIO_VERSION_CONFIG "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
set(OCIO_PROJECT_CONFIG "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake")
set(OCIO_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
set(OCIO_CUSTOM_FIND_MODULE_DIR "${CMAKE_INSTALL_PREFIX}/share/OpenColorIO/cmake/modules")
set(OCIO_CUSTOM_MACROS_MODULE_DIR "${CMAKE_INSTALL_PREFIX}/share/OpenColorIO/cmake/macros")
# Версия, полученная из верхнего уровня проекта()
write_basic_package_version_file(
${OCIO_VERSION_CONFIG}
# Поддержка диапазона версий только если сгенерировано с помощью CMake 3.19.2 или новее.
COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/src/cmake/Config.cmake.in ${OCIO_PROJECT_CONFIG}
INSTALL_DESTINATION ${OCIO_CONFIG_INSTALL_DIR}
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
EXPORT ${PROJECT_NAME}_EXPORTED_TARGETS
DESTINATION ${OCIO_CONFIG_INSTALL_DIR}
NAMESPACE ${PROJECT_NAME}::
FILE ${OCIO_TARGETS_EXPORT_NAME}
)if (NOT BUILD_SHARED_LIBS)
# Установка пользовательских макросов, используемых в модулях поиска.
install(FILES
${CMAKE_CURRENT_LIST_DIR}/share/cmake/macros/VersionUtils.cmake
DESTINATION ${OCIO_CUSTOM_MACROS_MODULE_DIR}
)
# Установка пользовательских модулей поиска.
install(FILES
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findexpat.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/FindImath.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findpystring.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findminizip-ng.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findyaml-cpp.cmake
DESTINATION ${OCIO_CUSTOM_FIND_MODULE_DIR}
)
endif()
install(
FILES "${OCIO_PROJECT_CONFIG}" "${OCIO_VERSION_CONFIG}"
DESTINATION "${OCIO_CONFIG_INSTALL_DIR}"
)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )