CMake - 安装问题以制作包

时间:2017-07-18 22:19:08

标签: python c++ macos qt cmake

为了安装dlib,我遵循了本教程:http://www.pyimagesearch.com/2017/03/27/how-to-install-dlib/。 我使用的是Mac OS X 10.12.5并使用Python 3.5。 我跑

$ brew install cmake
$ brew install boost
$ brew install boost-python --with-python3

它没有任何错误。
但是当我尝试使用pip install dlib安装dlib时。我有一个错误:

The C compiler
    "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc"
    is not able to compile a simple test program.
error: cmake configuration failed

ld: can't map file, errno=22 file '/usr/local/opt/qt/lib' for architecture x86_64

有关完整错误,请参阅此链接(不想粘贴完整错误): https://gist.github.com/alexattia/3e98685310d90b65031db640d3ea716a

在回溯错误后,当我尝试手动制作dlib时,我有这个:

  Linking C executable cmTC_05e45

  /usr/local/Cellar/cmake/3.8.2/bin/cmake -E cmake_link_script
  CMakeFiles/cmTC_05e45.dir/link.txt --verbose=1


  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
  -Wl,-search_paths_first -Wl,-headerpad_max_install_names
  /usr/local/opt/qt/lib CMakeFiles/cmTC_05e45.dir/testCCompiler.c.o -o
  cmTC_05e45

完整跟踪展开:https://gist.github.com/alexattia/1e54ffb87c9eb4c811033f5cadd90331

我重新安装了XCode(来自Apple Store)和CMake(来自下载页面的3.8.2),我甚至安装了Qt Creator以获得Qt的干净版本,但我仍然有同样的错误。
我尝试用conda安装它,但在安装之后,我仍然没有python中的模块。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您评论道:

  

的确,在我的.bash_profile中,我导出了LDFLAGS =" / usr / local / opt / qt / lib",   export CPPFLAGS =" / usr / local / opt / qt / include",export PATH =" / usr / local / opt / qt / bin:$ PATH"。   但即使在评论时,我仍然有同样的错误

您对LDFLAGSCPPFLAGS的任务都没有意义,而且。{ 第一个是导致链接器失败的原因。

环境变量LDFLAGS的值(如果已设置)由构建系统解释 作为联系选项。同样环境变量的值 CPPFLAGS,如果设置,则被解释为预处理器选项。

/usr/local/opt/qt/lib不是关联选项,/usr/local/opt/qt/include 不是预处理器选项。这些只是目录名称。任何争论 您传递给不是选项的链接器(或预处理器或编译器) 作为输入文件由工具插入。因此,您已经引导链接器相信 /usr/local/opt/qt/lib是您的链接的输入文件。

ld: can't map file, errno=22 file '/usr/local/opt/qt/lib' for architecture x86_64

是链接器在发现/usr/local/opt/qt/lib不是时所说的内容 一个文件。

据推测,您希望指示/usr/local/opt/qt/lib所在的链接器 它应该在哪个目录中搜索链接所需的库。 表达该意图的链接选项是:

-L/usr/local/opt/qt/lib

以下是GCC options for linking

同样,您打算指示/usr/local/opt/qt/include的预处理器 它是一个搜索头文件的目录。预处理器 表达的选项是:

-I/usr/local/opt/qt/include

以下是GCC options for preprocessing

指定编译或链接选项是不正常的,也是不可取的 在您的bash登录配置文件中,正如您所做的那样。在中指定此类选项 构建系统的输入文件(makefile,cmakelists文件或类似文件),或作为参数 构建系统的配置。但是,如果你坚持指定它们 您的bash登录配置文件,然后您应指定:

LDFLAGS=-L/usr/local/opt/qt/lib
CPPFLAGS=-I/usr/local/opt/qt/include

一旦您在bash_profile中进行了这些环境设置,他们就会 仅在新的登录shell中生效。

答案 1 :(得分:0)

我有一个类似的问题,但发现它是由于提升。

试试这个。

  brew uninstall boost-python
  brew uninstall boost
  brew install boost-python --with-python3 --without-python
  pip3 install dlib