почему у меня есть некоторые отсутствующие файлы, когда cmake создает папку для сборки? (Maya 2020 - CMake 3.16.4 - VS 2017) - PullRequest
0 голосов
/ 17 марта 2020

Я точно следовал инструкции в справке API для создания проекта Visual Studio: Руководство по файлу CMakeLists.txt

, но я получил эту ошибку:

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

Missing Files

К вашему сведению: я использую Cmake 3.16.4 и Visual Studio 2017

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Учебное пособие неполное, так как в нем отсутствует команда project(). Ваш проект CMake должен всегда иметь хотя бы одну команду project(), так как он используется для инициализации некоторых довольно важных переменных и языка, используемого в файле CMake, среди прочего. Из документации CMake:

Файл CMakeLists.txt верхнего уровня для проекта должен содержать буквальный прямой вызов команды project(); загрузка одного с помощью команды include() недостаточна. Если такого вызова не существует, CMake выдаст предупреждение и сделает вид, что вверху есть project(Project), чтобы включить языки по умолчанию (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()
0 голосов
/ 17 марта 2020

это правильный 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()
...