在使用luarocks安装fbtorch时,Cmake无法识别FOLLY_LIBRARIES的缓存条目

我正在尝试在Linux上安装fbtorch,然而,当我尝试运行 luarocks install fbtorch 时,我得到了以下错误。

cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="/home/user/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="/home/user/torch/install/lib/luarocks/rocks/fbtorch/scm-1"

fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Torch7 in /home/user/torch/install
CMake在/usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake中出现错误: 
  REQUIRED_ARGS (missing: FOLLY_INCLUDE_DIR FOLLY_LIBRARIES)
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindFolly.cmake:23 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:12 (FIND_PACKAGE)

-- 配置不完整,出现错误!
请参见"/tmp/luarocks_fbtorch-scm-1-4920/fbtorch/build/CMakeFiles/CMakeOutput.log"

现在,为了修复REQUIRED_ARGS (missing: FOLLY_INCLUDE_DIR FOLLY_LIBRARIES)的错误,我将cmake命令更改为:

cmake -E make_directory build && cd build && cmake .. -DFOLLY_LIBRARIES="/home/user/local/lib" -DFOLLY_INCLUDE_DIR="/home/user/local/include" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(LUA_BINDIR)/.." -DCMAKE_INSTALL_PREFIX="$(PREFIX)"

请注意:我已经在适当的目录下编译并安装了folly,位于/home/user/local/

这个命令修复了FOLLY_INCLUDE_DIR的错误,但是它仍然显示FOLLY_LIBRARIES的错误,如下所示:

CMake在/usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake中出现错误: 
REQUIRED_ARGS (missing: FOLLY_LIBRARIES)
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindFolly.cmake:23 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:12 (FIND_PACKAGE)

我漏掉了什么吗?为什么cmake认识到了FOLLY_INCLUDE_DIR的缓存条目,但却没有认识到FOLLY_LIBRARIES的条目?

点赞
用户2858773
用户2858773

如果你查看FindFolly.cmake文件,你会看到以下代码:

SET(FOLLY_LIBRARIES ${FOLLY_LIBRARY})

这意味着FOLLY_LIBRARIES被设置,但需要FOLLY_LIBRARY

因此,在命令行中将-DFOLLY_LIBRARIES改为-DFOLLY_LIBRARY

2017-11-22 06:41:40
用户3440745
用户3440745

find_package() 调用中 "missed" 列表中列出的变量 不一定CACHE 变量。因此,设置相同名称的缓存变量可能无法解决问题。

如果搜索的包实际上安装在_非标准位置_中,最好通过提示 "Find" 脚本找到该位置,而不是盲目设置 "missing" 变量。

许多 "Find" 脚本在其代码开头描述了可能的参数化方式。除此之外,还有_常见的方式_来提示 "Find" 脚本有关包的实际位置;这些方式适用于大多数脚本。例如,您可以将包的安装位置添加到_CMAKE_PREFIX_PATH_ 变量中(请参见此问题)。

2017-11-22 08:11:53