Не могу добавить внешний проект, используя ExternalProject_Add в CMake
У меня очень странная проблема: я пытаюсь добавить внешний проект (библиотеку metis) в свой проект CMake:
set(METIS_VERSION "5.1.0")
set(METIS_ARCHIVE "${PROJECT_SOURCE_DIR}/third-party/metis-${METIS_VERSION}.tar.gz")
if(NOT EXISTS ${METIS_ARCHIVE})
set(METIS_ARCHIVE "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-${METIS_VERSION}.tar.gz")
endif()
set(METIS_DIR ${PROJECT_BINARY_DIR}/third-party/metis)
set(METIS_ROOT ${METIS_DIR}/src/Metis)
ExternalProject_Add(Metis
PREFIX ${METIS_DIR}
DOWNLOAD_DIR "${PROJECT_SOURCE_DIR}/third-party"
URL ${METIS_ARCHIVE}
URL_HASH "MD5=5465e67079419a69e0116de24fce58fe"
PATCH_COMMAND patch ${METIS_ROOT}/CMakeLists.txt < ${PROJECT_SOURCE_DIR}/cmake/Metis-CMakeLists.txt.patch
SOURCE_DIR ${METIS_ROOT}
CONFIGURE_COMMAND $(MAKE) config shared=1 prefix=${METIS_ROOT} cc=${CMAKE_C_COMPILER}
BINARY_DIR ${METIS_ROOT}
BUILD_COMMAND $(MAKE)
)
Конфигурация идет нормально, но когда я пытаюсь сделать, я получаю следующее сообщение об ошибке:
[100%] Built target metis
make[5]: *** No rule to make target `s'. Stop.
make[4]: *** [all] Error 2
make[3]: *** [third-party/metis/src/Metis-stamp/Metis-build] Error 2
make[2]: *** [CMakeFiles/Metis.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2
Теперь интересная часть, если я вызову make в подробном режиме (VERBOSE=1 make
), код работает нормально, и у меня нет ошибок. Также я проверил бег make -C build/Darwin-x86_64/third-party/metis/src/Metis/
и это тоже хорошо работает Кто-то знает, в чем здесь проблема?
аа
1 ответ
Я проверил запуск make -C build/Darwin-x86_64/ стороннего /metis/src/Metis/, и это также отлично работает
99,9% обвиняют окружающую среду (:
Вы можете проверить это с помощью printenv
команда:
BUILD_COMMAND printenv && make
скопировать результат printenv
и сравните это с "чистым". Вы должны увидеть некоторые различия, для меня это:
- MFLAGS
- MAKEFLAGS
- MAKELEVEL
Я не знаю, в чем именно причина проблемы, но когда я сбрасываю эти переменные, все работает нормально (обратите внимание, что вам также необходимо обновить команду установки):
BUILD_COMMAND unset MFLAGS && unset MAKEFLAGS && unset MAKELEVEL && make
INSTALL_COMMAND unset MFLAGS && unset MAKEFLAGS && unset MAKELEVEL && make install