1

私が抱えている問題は非常に奇妙です: CMake プロジェクトに外部プロジェクト (metis ライブラリ) を追加しようとしています:

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/、これも正常に動作します 誰かがここで何が問題なのか知っていますか?

ああ

4

1 に答える 1

1

make -C build/Darwin-x86_64/thirdparty/metis/src/Metis/ の実行を確認しましたが、これも正常に動作します

99.9% は環境のせい (:

printenv次のコマンドを使用してテストできます。

BUILD_COMMAND printenv && make

結果をコピーprintenvして、「クリーン」なものと比較します。あなたはいくつかの差分を見る必要があります、私にとってはそれです:

  • MFLAGS
  • メイクフラグ
  • メイクレベル

問題の正確な理由はわかりませんが、この変数の設定を解除すると、すべて正常に動作します (インストール コマンドも更新する必要があることに注意してください)。

BUILD_COMMAND unset MFLAGS && unset MAKEFLAGS && unset MAKELEVEL && make
INSTALL_COMMAND unset MFLAGS && unset MAKEFLAGS && unset MAKELEVEL && make install
于 2014-08-06T14:21:50.607 に答える