Last active
January 5, 2017 15:49
-
-
Save jlgerber/5b82d962857792c08300853ebe523a8c to your computer and use it in GitHub Desktop.
cmake - custom FindMaya.cmake plugin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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