Здравствуйте. Есть большой проект, который конфигурируется cmake и собирается make. В проект входит некий компонент, который не переписан на конфигурирование cmake, там обычный Makefile и переписывать его не хочется.
Из cmake я просто создаю отдельный таргет, командой add_custom_target. Внутри этого таргета копирую проект в билд-папку. И собираю его там простым вызовом make внутри этого таргета.
То есть, чтобы нагляднее было:
add_custom_target(${CUSTOM_TARGET} ALL
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}" "${CUSTOM_BUILD_DIR}"
COMMAND $(MAKE) clean
COMMAND $(MAKE)
COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${PRODUCT} "${PRODUCT_DIR}"
WORKING_DIRECTORY "${CUSTOM_BUILD_DIR}"
VERBATIM
)
Проект отлично собирается. Все хорошо. Но! Если выполнить снова make -j8 на уже собранном проекте, то получается следующее:
make[5]: Предупреждение: время изменения файла "blablabla.c" находится в будущем (0.0011)
make[5]: предупреждение: Неправильный ход часов. Сборка может быть неполной.
Похоже это значит, make -j8 распараллеивает команды еще и внутри таргета. Видимо make исполнилось раньше, чем copy_directory.
Прав ли я? И как это пофиксить? Заранее спасибо за ответы. :-)