У меня есть заголовочная папка с именем 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 с другим исходным каталогом.
Я не могу понять, почему возникает эта ошибка.Пожалуйста, помогите Спасибо