ExternalProject_Add извлечь подкаталог - PullRequest
0 голосов
/ 05 июня 2018

Я сбит с толку тем, что происходит;Поведение cmake зависит от операционной системы.

Для следующего кода:

  ExternalProject_Add(
    tetgen
    PREFIX ${PROJECT_BINARY_DIR}/external/
    URL https://bitbucket.org/likask/mofem-joseph/downloads/tetgen-1.5.0.tgz
    CONFIGURE_COMMAND cmake ${PROJECT_BINARY_DIR}/external/src/tetgen
    BUILD_COMMAND make
    INSTALL_COMMAND ""
  )

В Linux с cmake версии 3.8.2 библиотека используется для

${PROJECT_BINARY_DIR}/external/src/tetgen/tetgen-1.5.0

, где на MacOS X с cmake версии 3.7.2 используется для

${PROJECT_BINARY_DIR}/external/src/tetgen

Другими словами, для одного случая пакет извлекается непосредственно в исходный каталог, а в другой - с подкаталогом.

Любой имеетЛюбая идея, как решить эту проблему, я не могу построить независимую установку системы.

Любая помощь или предложения очень ценятся.

1 Ответ

0 голосов
/ 05 июня 2018

Я знаю ответ!Торопиться.

Я решил не удалять вопрос, поскольку вопросы и ответы могут быть полезны для других.

Источник проблемы находится в пакете, который сжат в Mac OS X, состоит из скрытого файла и каталога пакета.Я упустил это из виду.

В этом конкретном случае, если вы посмотрите на ${PROJECT_BINARY_DIR}/external/src/tetgen-stamp/extract-tetgen.cmake строку, код которой

# Analyze what came out of the tar file:
#
message(STATUS "extracting... [analysis]")
file(GLOB contents "${ut_dir}/*")
list(REMOVE_ITEM contents "${ut_dir}/.DS_Store")
list(LENGTH contents n)
if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}")
  set(contents "${ut_dir}")
endif()

, вы обнаружите, что в сжатом пакете должен быть единственный каталогчтобы перейти в исходный каталог по умолчанию, т. е. ${PROJECT_BINARY_DIR}/external/src/tetgen, в противном случае копируются все файлы, включая каталог.

Проверьте, нет ли у вас скрытых файлов в каталоге пакета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...