ExternalProject_Add extract子目录

时间:2018-06-05 16:32:05

标签: cmake external-project

我很困惑发生的事情; cmake的行为取决于操作系统。

以下代码:

findstr

在linux上使用cmake版本3.8.2库被提升为

  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 ""
  )

在Mac OS X上使用cmake版本3.7.2的文件被提升为

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

换句话说,一个案例包直接提取到源目录,另一个用子目录提取。

任何人都知道如何解决这个问题,我无法构建独立的系统安装。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:-1)

我知道答案!匆忙。

我决定不删除这个问题,因为Q& A可能对其他人有用。

问题的根源在软件包中,在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 否则,将复制包括目录在内的所有文件。

检查包目录中是否有隐藏文件。