# FindMaya.cmake - CMake module for finding Autodesk Maya SDK # This module provides functions to find Maya include directories and libraries #[=======================================================================[ FindMaya -------- This module finds the Maya SDK installation and provides variables and functions for building Maya plugins. Imported Targets ^^^^^^^^^^^^^^^^ This module does not define any library targets. Result Variables ^^^^^^^^^^^^^^^ This module defines the following variables: :: MAYA_FOUND - True if Maya SDK was found MAYA_INCLUDE_DIR - Maya include directories MAYA_LIBRARIES - Maya libraries to link against MAYA_VERSION - The version of Maya found (e.g., 2023) MAYA_LOCATION - The root Maya installation directory MAYA_BIN_DIR - Maya bin directory MAYA_LIB_DIR - Maya lib directory MAYA_PLUGINS_DIR - Maya plugins directory Hints ^^^^^ The user may set the following variables to help this module find what they want: :: MAYA_VERSION - Specify a specific Maya version to search for (e.g., 2022, 2023, 2024, 2025, 2026) MAYA_LOCATION - Specify the root Maya installation directory (e.g., C:/Program Files/Autodesk/Maya2023) #]=======================================================================] # Check if already found if(MAYA_FOUND AND MAYA_INCLUDE_DIR) return() endif() # Default Maya version if not specified if(NOT DEFINED MAYA_VERSION) set(MAYA_VERSION 2023) endif() # List of supported Maya versions set(_MAYA_SUPPORTED_VERSIONS "2026;2025;2024;2023;2022") # Check if the specified Maya version is supported if(NOT MAYA_VERSION IN_LIST _MAYA_SUPPORTED_VERSIONS) message(WARNING "Maya version ${MAYA_VERSION} is not in the supported list: ${_MAYA_SUPPORTED_VERSIONS}") endif() # Search paths set(_MAYA_SEARCH_PATHS) # Add user-specified MAYA_LOCATION if(MAYA_LOCATION) list(APPEND _MAYA_SEARCH_PATHS "${MAYA_LOCATION}") endif() if(ENV{MAYA_LOCATION}) list(APPEND _MAYA_SEARCH_PATHS "$ENV{MAYA_LOCATION}") endif() message(STATUS ${_MAYA_SEARCH_PATHS}) # Add environment variable paths foreach(_env_var IN ITEMS MAYA_LOCATION MAYA_SDK_DIR MAYA_SDK_ROOT) if(NOT "${${_env_var}}" STREQUAL "") list(APPEND _MAYA_SEARCH_PATHS "${${_env_var}}") endif() endforeach() # Add Program Files paths for all supported versions #foreach(_version IN ITEMS 2026 2025 2024 2023 2022) # list(APPEND _MAYA_SEARCH_PATHS "C:/Program Files/Autodesk/Maya${_version}") #endforeach() # Find Maya include directory find_path(MAYA_INCLUDE_DIR NAMES maya/MFn.h mapi_ui_control.h HINTS ${_MAYA_SEARCH_PATHS} PATH_SUFFIXES include ) # Find Maya library directory find_path(MAYA_LIB_DIR NAMES OpenMaya.lib HINTS ${_MAYA_SEARCH_PATHS} PATH_SUFFIXES lib ) # Find Maya bin directory find_path(MAYA_BIN_DIR NAMES maya.exe HINTS ${_MAYA_SEARCH_PATHS} PATH_SUFFIXES bin ) # Extract Maya version from include path if not specified if(MAYA_INCLUDE_DIR AND NOT MAYA_VERSION) foreach(_version IN ITEMS 2026 2025 2024 2023 2022) if(MAYA_INCLUDE_DIR MATCHES "Maya${_version}") set(MAYA_VERSION ${_version}) break() endif() endforeach() endif() # Find Maya libraries set(_MAYA_REQUIRED_LIBS OpenMaya Foundation ) set(_MAYA_OPTIONAL_LIBS OpenMayaUI OpenMayaAnim OpenMayaRender ) set(MAYA_LIBRARIES) foreach(_lib IN ITEMS ${_MAYA_REQUIRED_LIBS}) find_library(_MAYA_LIB_${_lib} NAMES "${_lib}.lib" HINTS ${MAYA_LIB_DIR} NO_DEFAULT_PATH ) if(_MAYA_LIB_${_lib}) list(APPEND MAYA_LIBRARIES "${_MAYA_LIB_${_lib}}") else() message(FATAL_ERROR "Could not find required Maya library: ${_lib}.lib") endif() endforeach() foreach(_lib IN ITEMS ${_MAYA_OPTIONAL_LIBS}) find_library(_MAYA_LIB_${_lib} NAMES "${_lib}.lib" HINTS ${MAYA_LIB_DIR} NO_DEFAULT_PATH ) if(_MAYA_LIB_${_lib}) list(APPEND MAYA_LIBRARIES "${_MAYA_LIB_${_lib}}") endif() endforeach() # Get Maya root directory from include path get_filename_component(MAYA_LOCATION "${MAYA_INCLUDE_DIR}" DIRECTORY) get_filename_component(MAYA_LOCATION "${MAYA_LOCATION}" DIRECTORY) # Set plugins directory set(MAYA_PLUGINS_DIR "${MAYA_LOCATION}/plug-ins") # Handle success/failure include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Maya REQUIRED_VARS MAYA_INCLUDE_DIR MAYA_LIB_DIR MAYA_LIBRARIES VERSION_VAR MAYA_VERSION ) # Print configuration info if(MAYA_FOUND) message(STATUS "Maya SDK found:") message(STATUS " Version: ${MAYA_VERSION}") message(STATUS " Location: ${MAYA_LOCATION}") message(STATUS " Include: ${MAYA_INCLUDE_DIR}") message(STATUS " Library: ${MAYA_LIB_DIR}") endif() # Mark as found mark_as_advanced(MAYA_INCLUDE_DIR MAYA_LIB_DIR MAYA_BIN_DIR)