cmake和VS2012的Maya插件编译问题
Maya plugin compile problems with cmake and VS2012
我正在尝试使用cmake编译Maya API中的示例插件,以创建Visual Studio 2012项目。但是,在编译Maya附带的库时,似乎存在许多问题。第一个问题是库试图弥补一些旧的bool实现缺失,这是通过添加预处理器定义来解决的
add_definitions(-D _BOOL)
到cmake文件。
他们库中的下一个错误是,它试图访问std::ostream,但在"std"中找不到它,这可以使用cmake:中的另一个定义来解决
add_definitions(-D REQUIRE_IOSTREAM)
这导致了我无法解决的最后一个错误,我在谷歌上搜索了它,查看了stackoverflow,并查看了maya附带的示例VSproject文件,无法解决它。错误(共18个)源于链接器,并且都是未解析的外部符号,例如错误:
Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall MStatus::MStatus(enum MStatus::MStatusCode)" (__imp_??0MStatus@@QAE@W4MStatusCode@0@@Z) referenced in function "public: virtual class MStatus __thiscall hello::doIt(class MArgList const &)" (?doIt@hello@@UAE?AVMStatus@@ABVMArgList@@@Z) C:pathmayacmake_samplehelloworld.obj Sample_helloworld
编辑:使用Andreas的改良cmakelist没有产生任何差异:嘿,谢谢你的回复,但我仍然会收到很多关于内部解决外部问题的错误:
Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall MStatus::MStatus(enum MStatus::MStatusCode)" (__imp_??0MStatus@@QAE@W4MStatusCode@0@@Z) referenced in function "public: virtual class MStatus __thiscall hello::doIt(class MArgList const &)" (?doIt@hello@@UAE?AVMStatus@@ABVMArgList@@@Z) D:mayacmake_samplehelloworld.obj Maya_Sample_Plugin
Error 13 error LNK2001: unresolved external symbol "public: virtual bool __thiscall MPxCommand::hasSyntax(void)const " (?hasSyntax@MPxCommand@@UBE_NXZ) D:mayacmake_samplehelloworld.obj Maya_Sample_Plugin
我去掉了其他错误,因为它们看起来和上面两个一样。我确保修改cmake文件中的路径以适应我的安装,现在看起来如下:
cmake_minimum_required (VERSION 2.6)
SET(MAYA_PLUGIN_NAME "Maya_Sample_Plugin")
SET(MAYA_DIRECTORY "C:/Program Files/Autodesk/Maya2013")
SET(MAYA_HEADERS_DIR "${MAYA_DIRECTORY}/include")
SET(MAYA_LIBRARY_DIR "${MAYA_DIRECTORY}/lib")
SET(SOURCE_FILES
helloworld.cpp
)
source_group("" FILES ${SOURCE_FILES})
INCLUDE_DIRECTORIES(
${MAYA_HEADERS_DIR}
${Boost_INCLUDE_DIR}
)
LINK_DIRECTORIES(
${MAYA_LIBRARY_DIR}
)
SET(LIBRARIES
Foundation.lib
OpenMaya.lib
OpenMayaAnim.lib
OpenMayaUI.lib
)
SET(MAYA_DEFINITIONS _AFXDLL _MBCS NT_PLUGIN REQUIRE_IOSTREAM _BOOL)
ADD_LIBRARY(${MAYA_PLUGIN_NAME} SHARED ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(${MAYA_PLUGIN_NAME} ${LIBRARIES})
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES COMPILE_DEFINITIONS "${MAYA_DEFINITIONS}")
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES OUTPUT_NAME "${MAYA_PLUGIN_NAME}")
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES SUFFIX ".mll")
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
对此事的任何帮助都会得到通知。
您需要告诉链接器要链接哪些库,这是用TARGET_LINK_LIBRARIES
完成的。以下是我在CMakeLists.txt.中使用的内容
SET(MAYA_PLUGIN_NAME "myCoolPlugin")
SET(MAYA_DIRECTORY "D:/Program Files (x86)/Autodesk Maya2011")
SET(MAYA_HEADERS_DIR "${MAYA_DIRECTORY}/include")
SET(MAYA_LIBRARY_DIR "${MAYA_DIRECTORY}/lib")
SET(SOURCE_FILES
myCoolPlugin.cpp
)
source_group("" FILES ${SOURCE_FILES})
INCLUDE_DIRECTORIES(${MAYA_HEADERS_DIR})
LINK_DIRECTORIES(${MAYA_LIBRARY_DIR})
SET(LIBRARIES Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaUI.lib)
SET(MAYA_DEFINITIONS _AFXDLL _MBCS NT_PLUGIN REQUIRE_IOSTREAM _BOOL)
ADD_LIBRARY(${MAYA_PLUGIN_NAME} SHARED ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(${MAYA_PLUGIN_NAME} ${LIBRARIES})
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES COMPILE_DEFINITIONS "${MAYA_DEFINITIONS}")
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES OUTPUT_NAME "${MAYA_PLUGIN_NAME}")
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES SUFFIX ".mll")
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES LINK_FLAGS "/export:initializePlugin /export:uninitializePlugin")
相关文章:
- clang 插件:在编译过程中修改 AST
- 编译 llvm 插件时出现问题:llvm/Config/llvm-config.h:没有这样的文件或目录
- 节点插件编译错误
- 使用Clang和插件进行编译
- 虚幻引擎4.21.2和Squareys CISQLite3插件编译问题
- 使用 CPP 插件在 gradle 中编译C++代码
- 在mac-ld上编译zathura pdf插件出错
- 无法在Maya插件中编译顶点着色器
- 使用Maven NAR插件对ARM进行交叉编译
- 编译 Qt 插件项目时出错
- EclipseCDT-键盘快捷键或插件,用于从编译错误中创建新的类和方法
- 无法使用 OSX Lion 编译C++插件?
- 在构建Node.js/Node-webkit插件时,通过binding.gyp将.cpp文件编译为Objective-C
- cmake和VS2012的Maya插件编译问题
- qgif和qjpeg插件的Q_IMPORT_PLUGIN编译错误
- 编译时插件/具有独立模块约束的自动工厂注册
- MacOS X-编译一个插件
- 编译插件的Nuke对Boost库
- 链接错误2001时编译玛雅插件的例子
- Qt Creator在编译后不能加载插件