记录一下 Maya 的C++开发环境搭建

软件准备

  • 安装Visual Studio 2017 作为IDE,这里需要注意一下,不同的VS版本对应不同的默认平台工具集,如果需要VS使用别的的平台工具集,需要修改安装指定的平台工具集.

  • 安装 Maya2020.

  • 获取软件版本对应的开发包(从Maya2016开始,maya软件安装包中不再携带开发包,而开发包作为一个单独的下载包存在),也可以不下载开发包,C++ 环境搭建需要的 Lib 链接库和 include 头文件在软件安装目录中已经存在,但我们可以获取开发包里 devkit 文件夹中的代码示例和插件向导(MayaPluginWizard2.0.zip)用于学习.

配置环境

手动配置

在 Visual Studio 2017 IDE 中新建一个”空项目”,然后点击项目,右键设置项目属性,将下列配置一一修改。

  • 配置:debug 平台:x64
  • 配置属性 》 常规 》 项目默认配置 》 配置类型 :动态库.dll
  • 配置属性 》 常规》 常规 》 目标文件拓展名 :.mll
  • C/C++ 》 常规 》 附加包含目录 :C:\Program Files\Autodesk\Maya2020\include;%(AdditionalLibraryDirectories)
  • C/C++ 》 预处理器 》 加入预处理器指令:WIN32;NDEBUG;_DEBUG;_WINDOWS;NT_PLUGIN;REQUIRE_IOSTREAM;_USRDLL;MAYAPLUGIN1_EXPORTS;
  • 链接器 》 常规 》 输出文件:C:\Users\mirror\Documents\maya\2020\plug-ins$(ProjectName)$(TargetExt)(自定义,这是你的插件生成的位置)
  • 链接器 》 常规 》 附加库目录:C:\Program Files\Autodesk\Maya2020\lib;%(AdditionalLibraryDirectories)
  • 链接器 》 输入 》 附加依赖项:Foundation.lib;OpenMaya.lib;OpenMayaUI.lib;OpenMayaAnim.lib;OpenMayaFX.lib;OpenMayaRender.lib;Image.lib;opengl32.lib;glu32.lib;

若为配置方案指定名称,如”maya2020”,将上列的 maya2020 替换成maya${Configuration},其中 ${Configuration} 是配置方案的名称,可快捷切换开发环境,而不用重新配置。
$(TargetDir)是在目标文件后自动赋予值为文件所在位置
$(TargetExt)目标文件拓展名
$(ProjectName)项目名

通过插件向导配置

插件向导.png

在下载好的开发包中找到插件向导文件夹–pluginwizard,其中有两个文件:

  • MayaPluginWizard2.0.zip
  • MayaWizardReadme.txt
    其中 MayaWizardReadme.txt 会告诉你官方推荐使用什么版本的 Visual Studio IDE 以及插件MayaPluginWizard2.0.zip中的内容的使用方法,例如,开发maya2020,应使用 Visual Studio 14.0 即 Visual Studio 2015(可以使用2017及其以上版本,然后配置2015的环境)默认的平台工具集;并且需要将对应的文件拷贝到指定的文件路径中。

由于我使用的是 Visual Studio 2019 需要将文件拷贝到不同的路径:

  • 将下列文件拷贝到路径(若没有,则新建):C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCWizards

    • MayaPluginWizard.ico
    • MayaPluginWizard.vsdir
    • MayaPluginWizard.vsz
  • 将下列文件夹拷贝到路径(若没有,则新建):C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\vcprojects

    • MayaPluginWizard

若在创建新项目的时候,创建项目失败,则需要将 MayaPluginWizard.vsz 文件内容中的 VS版本 改为 Visual Studio IDE 对应的版本
项目创建失败.png

配置好后,编译的插件会出现在 “输出文件” 的路径中。

软件安装踩坑

不同 Visual Studio 版本默认的平台工具集不同,需要视情况配置不同的工具集,Maya2020 C++ API 需要使用 Visual Studio 2017(前面的插件向导要求使用,Visual Studio 2015,这并不冲突),因此会使用V140平台工具集,若使用高版本 Visual Studio ,需要切换平台工具集版本:

  • Visual Studio 2019: V142
  • Visual Studio 2017: V141
  • Visual Studio 2015: V140
  • Visual Studio 2013: V120
  • Visual Studio 2012: V110
  • Visual Studio 2010: V100
  • Visual Studio 2008: V90
  • Visual Studio 2005: V80
  • Visual Studio 2003: V71
  • Visual Studio 2002: V70
  • Visual Studio 6: V60
    若低版本软件安装不上,在卸载和清理了软件之后,可以尝试先安装高版本软件,再安装低版本软件,具体原因不清楚(可能是高版本软件在安装过程中将低版本报错的组件安装了),但是真的行得通。安装 Visual Studio IDE 软件需要给注册表开权限哦!!!
安装平台工具集

升级打开低版本VS工程,需要切换工具集版本 和 windowos SDK版本

  1. 修改/添加 Visual Studio_IDE :

修改VS_IDE.png

  1. 选择单个组件,并找到 MSVC v140-VS 2015 C++ 生成工具(v14.00):
    选择单个组件.png

  2. 在项目属性中选取指定的工具集.png :
    在项目中选取指定的工具集.png

  3. (略)若使用高版本打开低版本的项目,还需要重复以上步骤,安装/切换对应低版本的 Windows SDK 版本 :
    切换低版本的WindowsSDK.png

插件踩坑

由于一开始不知道需要指定的工具集版本,导致编译的插件不能被加载,前前后后排查花费了大量时间,最后总结一下:

  • 编译好的文件如果从插件编辑器中无法显示:

    1. 可能是开软件前,该插件的路径还没有生成,需要重启may.
    2. 可能是插件不在Maya的插件搜索路径中,需要添加环境变量.
    3. 插件本身有问题,需检查插件。
  • 如果无法加载插件,在保证插件代码正确的情况下,可能是没有使用正确的VC编译器,详细参照前文.