无法在CMake中使用ExternalProject_Add添加外部项目

时间:2014-08-06 12:27:15

标签: build makefile cmake metis

我遇到的问题很奇怪:我尝试将外部项目(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

现在有趣的部分,如果我在详细模式(VERBOSE=1 make)中调用make,代码运行正常,我没有错误。此外,我检查了运行make -C build/Darwin-x86_64/third-party/metis/src/Metis/,这也正常 有人知道这里的问题是什么吗?

AA

1 个答案:

答案 0 :(得分: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