我很困惑发生的事情; 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
换句话说,一个案例包直接提取到源目录,另一个用子目录提取。
任何人都知道如何解决这个问题,我无法构建独立的系统安装。
非常感谢任何帮助或建议。
答案 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
否则,将复制包括目录在内的所有文件。
检查包目录中是否有隐藏文件。