The CMakeLists.txt
File
The CMake tool is used to generate projects for your plug-ins and applications.
The CMakeLists.txt
file in the plug-in or application directory contains information about the libraries, source files, and build functions needed to generated a project. It must be located at the top level of your plug-in or application directory, along with your source code and any mel
scripts that will be packaged with your plug-in.
This page will walk you through the different parts of a CMakeLists.txt
file.
You can use the CMakeLists.txt
files in the devkit samples as starting points for creating your own.
The CMakeLists.txt
file has the following elements:
The minimum version of CMake required
cmake_minimum_required(VERSION 3.22.1)
The path to the
pluginEntry.cmake
file. This path will be identical for allCMakeLists.txt
files you use with the Maya devkitinclude($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake)
For example:
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake)
The project name
set(PROJECT_NAME <projectName>)
For example:
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode)
A list of required resource files, if needed. If your project uses more than one resource file, separate each file with a space
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode) set(RESOURCES_FILES myResource.xpm)
A list of
mel
files, if needed. If your project uses more than onemel
file, separate each file with a spaceset(MEL_FILES <melFileName1> <melFileName2> <melFileName3>)
For example:
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode) set(RESOURCES_FILES myResource.xpm) set(MEL_FILES exampleNode.mel)
A list of source files, including the
mel
and resource files, if used. If your project uses more than one source file, separate each file with a spaceset(SOURCE_FILES <sourceFileName1> <sourceFileName2> <sourceFileName3> ${MEL_FILES} ${RESOURCE_FILES})
For example:
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode) set(RESOURCES_FILES myResource.xpm) set(MEL_FILES exampleNode.mel) set(SOURCE_FILES exampleNode.cpp ${MEL_FILES} )
A list of required devkit libraries. Separate the list of libraries with a space
Important:All plug-ins and applications must include the OpenMaya and Foundation libraries.
set(LIBRARIES OpenMaya Foundation <additionalLibrary1> <additionalLibrary2> )
For example:
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode) set(RESOURCES_FILES myResource.xpm) set(MEL_FILES exampleNode.mel) set(SOURCE_FILES exampleNode.cpp ${MEL_FILES} ) set(LIBRARIES OpenMaya Foundation )
A list of required 3rd party packages added using the
find_<package_name>
macros or thefind_package()
call.find_package(MtoA) find_alembic()
For example:
cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode) set(RESOURCES_FILES myResource.xpm) set(MEL_FILES exampleNode.mel) set(SOURCE_FILES exampleNode.cpp ${MEL_FILES} ) set(LIBRARIES OpenMaya Foundation ) find_package(MtoA) find_alembic()
Finally, the build function.
If you are creating a plug-in, add
build_plugin()
. If you are creating a standalone application, addbuild_application()
.cmake_minimum_required(VERSION 3.22.1) include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake) set(PROJECT_NAME exampleNode) set(RESOURCES_FILES myResource.xpm) set(MEL_FILES exampleNode.mel) set(SOURCE_FILES exampleNode.cpp ${MEL_FILES} ) set(LIBRARIES OpenMaya Foundation ) find_package(MtoA) find_alembic() build_plugin()