C++ 为什么在cmake生成生成文件夹时缺少一些文件?(Maya 2020-CMake 3.16.4-VS 2017)

C++ 为什么在cmake生成生成文件夹时缺少一些文件?(Maya 2020-CMake 3.16.4-VS 2017),c++,visual-studio,cmake,maya,maya-api,C++,Visual Studio,Cmake,Maya,Maya Api,我完全按照API帮助中的说明创建visual studio项目: 但我有一个错误: CMake Warning (dev) in CMakeLists.txt: No project() command is present. The top-level CMakeLists.txt file must contain a literal, direct call to the project() command. Add a line of code such as

我完全按照API帮助中的说明创建visual studio项目:

但我有一个错误:

CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.
顺便说一下,这个错误并没有停止进程,CMake为我生成生成文件夹 但是正如您所看到的,我认为它没有创建一些文件,没有helloworld.vcxproj&helloworld.vcxproj.filters


仅供参考:我使用Cmake 3.16.4和visual studio 2017。教程不完整,因为缺少命令。您的CMake项目应该始终至少有一个project命令,因为它用于初始化一些非常重要的变量,以及CMake文件中使用的语言,等等。从CMake文档中:

项目的顶级CMakeLists.txt文件必须包含对项目命令的文本直接调用;通过include命令加载一个是不够的。如果不存在这样的调用,CMake将发出警告并假装顶部有projectProject以启用默认语言C和CXX

使用set命令初始化PROJECT_NAME是一种不好的做法,因为PROJECT调用也会为您这样做。我建议修改CMake文件以包含project命令:

cmake_minimum_required(VERSION 2.8)

include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake)

# Set the project here.
project(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()

这是正确的CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(test)

set(PROJECT_NAME test)


include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake)



set(RESOURCES_FILES myResource.xpm)

set(MEL_FILES 
    test.mel)

set(SOURCE_FILES
        test.cpp
        ${MEL_FILES}
    )

set(LIBRARIES
    OpenMaya Foundation
    )

build_plugin()

请出示CMake的完整输出。在输出的最后应该是一行,它告诉我们配置是完成了还是失败了。@AminKhormaei您可以尝试删除您的生成文件夹,并从头运行CMake,这将保证旧的CMake缓存被删除。我也这样做了,@AminKhormaei您的问题帖子中的消息不是错误,而是警告。它并不表示CMake是否完全成功,因此,根据Tsyvarev的要求,请在您的问题帖子中提供完整的CMake输出。在plugintery.cmake中提供代码也会有帮助,以便更好地理解可能出现的错误。我在最低要求之后添加了项目,并解决了我的问题这里的语法不正确。使用没有项目名称的项目将生成CMake错误。