Skip to content

Instantly share code, notes, and snippets.

@jlgerber
Last active January 5, 2017 15:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jlgerber/5b82d962857792c08300853ebe523a8c to your computer and use it in GitHub Desktop.
Save jlgerber/5b82d962857792c08300853ebe523a8c to your computer and use it in GitHub Desktop.
cmake - custom FindMaya.cmake plugin
# adapted from Chad Vernon's wonderful video series
# only tested on OSX so far
# to use, set the CMAKE_MODULE_PATH to point at this file.
# CACHE keyword allows us to pass in from the command line
if(NOT DEFINED MAYA_VERSION)
set(MAYA_VERSION 2017 CACHE STRING "Maya version")
endif()
set(MAYA_COMPILE_DEFINITIONS "REQUIRE_IOSTREAM;_BOOL")
set(MAYA_INSTALL_BASE_SUFFIX "")
set(MAYA_LIB_SUFFIX "")
set(MAYA_LIB_PREFIX "")
set(MAYA_LIB_SUBDIR "")
set(MAYA_INC_SUBDIR "include")
set(MAYA_PLUGIN_EXTENSION "")
set(MAYA_DEVKIT_SUFFIX "-devkit")
if(WIN32)
# windows
set(MAYA_INSTALL_BASE_DEFAULT "C:/Program Files/Autodesk")
set(MAYA_LIB_SUFFIX "lib")
set(MAYA_LIB_SUBDIR "lib")
message(STATUS "I am an WINDOWS")
set(MAYA_COMPILE_DEFINITIONS "${MAYA_COMILE_DEFINITIONS};NT_PLUGIN")
set(MAYA_PLUGIN_EXTENSION ".mll")
elseif(APPLE)
set(MAYA_INSTALL_BASE_DEFAULT "/Applications/Autodesk")
set(MAYA_INSTALL_BASE_SUFFIX "/Maya.app")
set(MAYA_LIB_SUFFIX "dylib")
set(MAYA_LIB_PREFIX "lib")
set(MAYA_LIB_SUBDIR "/Contents/MacOS")
set(MAYA_INC_SUBDIR "/include")
set(MAYA_COMPILE_DEFINITIONS "${MAYA_COMILE_DEFINITIONS};OSMac")
set(MAYA_PLUGIN_EXTENSION ".bundle")
message(STATUS "I am an APPLE")
else()
#linux
set(MAYA_INSTALL_BASE_DEFAULT /usr/autodesk)
set(MAYA_INSTALL_BASE_SUFFIX -x64)
set(MAYA_LIB_SUFFIX "so")
set(MAYA_LIB_PREFIX "lib")
set(MAYA_COMPILE_DEFINITIONS "${MAYA_COMILE_DEFINITIONS};LINUX")
set(MAYA_PLUGIN_EXTENSION ".so")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS -fPIC")
message(STATUS "I am LINUX")
endif()
message(STATUS "MAYA_LIB_SUBDIR " ${MAYA_LIB_SUBDIR})
set(OPENMAYA ${MAYA_LIB_PREFIX}OpenMaya.${MAYA_LIB_SUFFIX})
# override the default installation path
set(MAYA_INSTALL_BASE_PATH ${MAYA_INSTALL_BASE_DEFAULT} CACHE STRING "Root Maya installation path")
set(MAYA_LOCATION ${MAYA_INSTALL_BASE_PATH}/maya${MAYA_VERSION}${MAYA_INSTALL_BASE_SUFFIX})
set(MAYA_DEVKIT_LOCATION ${MAYA_INSTALL_BASE_PATH}/maya${MAYA_VERSION}${MAYA_DEVKIT_SUFFIX})
# find the include path
message(STATUS "searching for ${OPENMAYA} in ${MAYA_LOCATION}${MAYA_LIB_SUBDIR}")
find_path(MAYA_LIBRARY_DIR ${OPENMAYA}
PATHS
${MAYA_LOCATION}
$ENV{MAYA_LOCATION}
PATH_SUFFIXES
"${MAYA_LIB_SUBDIR}/"
DOC "Maya library path"
)
message(STATUS "MAYA_INC_SUBDIR " ${MAYA_INC_SUBDIR})
message(STATUS "searching for maya/MFn.h in ${MAYA_DEVKIT_LOCATION}${MAYA_INC_SUBDIR}")
find_path(MAYA_INCLUDE_DIR maya/MFn.h
PATHS
${MAYA_DEVKIT_LOCATION}
$ENV{MAYA_LOCATION}
PATH_SUFFIXES
"${MAYA_INC_SUBDIR}/"
DOC "Maya include path"
)
set(_MAYA_LIBRARIES OpenMaya OpenMayaAnim OpenMayaFX OpenMayaRender OpenMayaUI Foundation)
foreach(MAYA_LIB ${_MAYA_LIBRARIES})
find_library(MAYA_${MAYA_LIB}_LIBRARY NAMES ${MAYA_LIB} PATHS ${MAYA_LIBRARY_DIR} NO_DEFAULT_PATH)
message(STATUS "attempting to set MAYA_${MAYA_LIB}_LIBRARY searching here ${MAYA_LIBRARY_DIR}")
message(STATUS "lib=" ${MAYA_${MAYA_LIB}_LIBRARY})
# appending MAYA_${MAYA_LIB}_LIBRARY to variable
set(MAYA_LIBRARIES ${MAYA_LIBRARIES} ${MAYA_${MAYA_LIB}_LIBRARY})
endforeach()
include(FindPackageHandleStandardArgs)
# cmake - throw an error if you cannot find these
find_package_handle_standard_args(Maya DEFAULT_MSG MAYA_INCLUDE_DIR MAYA_LIBRARIES)
message(STATUS "....")
message(STATUS "FindMaya variables")
message(STATUS "MAYA_LIBRARY_DIR" ${MAYA_LIBRARY_DIR})
message(STATUS "MAYA_INCLUDE_DIR" ${MAYA_INCLUDE_DIR})
message(STATUS "MAYA_LIB" ${MAYA_LIBRARIES})
message(STATUS "....")
function(MAYA_PLUGIN _target)
if(WIN32)
set_target_properties(${_target} PROPERTIES
LINK_FLAGS "/export:initializePlugin /export:uninitializePlugin"
)
endif()
set_target_properties(${_target} PROPERTIES
COMPILE_DEFINITIONS "${MAYA_COMPILE_DEFINITIONS}"
PREFIX ""
SUFFIX ${MAYA_PLUGIN_EXTENSION}
)
endfunction()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment