Проблема с использованием Cmake в подкаталогах после однократного использования cmake для всего проекта - PullRequest
2 голосов
/ 28 июня 2011

У меня есть заголовочная папка с именем Tutorial и подпапка с именем MathFunctions, в каждой из которых по одному коду. Я написал CMakeLists.txt для обеих папок и использовал cmake в приглашении cmd, и он работает нормально.Заголовок папки имеет следующее:

CMAKE_MINIMUM_REQUIRED ( VERSION 2.6)

PROJECT (Tutorial)

SET (Tutorial_VERSION_MAJOR 1)
SET (Tutorial_VERSION_MINOR 0)

CONFIGURE_FILE (
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h "
)

INCLUDE_DIRECTORIES ("${PROJECT_BINARY_DIR}")

OPTION (USE_MYMATH "Use tutorial provided math implementation" ON)

if (USE_MYMATH)
  INCLUDE_DIRECTORIES ("${PROJECT_SOURCE_DIR}/MathFunctions")

  ADD_SUBDIRECTORY (MathFunctions)
  SET (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif (USE_MYMATH)

ADD_EXECUTABLE (Tutorial tutorial.c)
TARGET_LINK_LIBRARIES (Tutorial ${EXTRA_LIBS})

CMakeLists.txt в подпапке имеет следующее:

CMAKE_MINIMUM_REQUIRED ( VERSION 2.6)
add_library (MathFunctions mysqrt.c )

и в командной строке:

C:\home\Tutorial\BUILD>cmake ..

-- Building for: Visual Studio 9 2008

-- Check for working C compiler using: Visual Studio 9 2008

-- Check for working C compiler using: Visual Studio 9 2008 --

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working CXX compiler using: Visual Studio 9 2008

-- Check for working CXX compiler using: Visual Studio 9 2008

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Configuring done

-- Generating done

-- Build files have been written to: C:/home/Tutorial/BUILD

Позже яВнесены некоторые изменения в MathFunctions.c. Я не внес изменений в Tutorial.c.Поэтому я хочу заново создать файлы make только для папки MathFunctions.Но я не в состоянии это сделать.Я получаю следующую ошибку

C:\home\Tutorial\BUILD>cmake ../MathFunctions

Ошибка CMake: источник "C: /home/Tutorial/MathFunctions/CMakeLists.txt" не соответствует источнику "C: /home/Tutorial/CMakeLists.txt"используется для генерации кеша.Перезапустите cmake с другим исходным каталогом.

Я не могу понять, почему возникает эта ошибка.Пожалуйста, помогите Спасибо

Ответы [ 3 ]

4 голосов
/ 09 марта 2015

ОК, я знаю, что это древний, но ... была похожая проблема, то же сообщение об ошибке.

В графическом интерфейсе файла есть команда «Файл», которая очищает кэш.Это не сработало в первый раз, но в конце концов это сработало.Я немного поболтал, добавив cmake в путь пользователя, перезагрузившись, не знаю, помогло ли это.

Сначала у меня возникли проблемы, когда я попытался запустить cmake на CMakeLists.txt, который НЕ былкорень.Эта ошибка появилась, когда я попытался снова с правильным исходным каталогом.V3.1.3.

2 голосов
/ 29 июня 2011

Если вы внесли изменения в исходный файл, который уже находится в проекте, нет необходимости перезапускать CMake. Просто перекомпилируйте.

0 голосов
/ 31 января 2017

Просто удалите

.externalNativeBuild

папку из вашего проекта и синхронизировать ее снова. Сделав это, вы удалите кеш сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...