CMake OSX命令行与GUI差异

时间:2016-04-11 18:10:04

标签: c++ xcode macos opencv cmake

我正在尝试将项目Theia-SfM配置为在Mac上使用XCode进行编译。

https://github.com/sweeneychris/TheiaSfM

使用通过XCode通过Macports安装的CMake 3.5.1,一旦安装了适当的依赖项,软件包就可以进行配置和构建,例如:

mkdir Build
cmake -G XCode ..

-- Generating done
-- Build files have been written to: /Users/alex/src/TheiaSfM/build

如果使用从KitWare下载并通过应用程序安装的CMake GUI 3.5.1,则相同的版本无法找到ImageMagick。输出结束:

-- Found SuiteSparse 4.2.1
-- Check for ImageMagick
ImageMagick_EXECUTABLE_DIRImageMagick_EXECUTABLE_DIR-NOTFOUND
CMake Error at /Applications/CMake.app/Contents/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find ImageMagick (missing: ImageMagick_convert_EXECUTABLE
  ImageMagick_mogrify_EXECUTABLE ImageMagick_convert_EXECUTABLE
  ImageMagick_mogrify_EXECUTABLE)

ImageMagick已经在/ opt / local / bin中安装(通过macports)。

Alexs-MacBook-Pro:TheiaSfM alex$ type -a mogrify
mogrify is /opt/local/bin/mogrify

有没有明显的理由为什么相同版本的CMake无法找到相同的包?我假设/ opt / local在我的CMake GUI路径搜索路径中,因为它进一步找到了其他依赖项。

-- Found Google Flags: /opt/local/include in namespace: google
-- Check for Google Log
-- Found Google Logging: /opt/local/include
-- Check for Ceres

更一般地说,是否存在有关CMake USAGE问题的活跃论坛?整个CMAKE似乎记录得非常糟糕,并且以无数令人困惑的方式失败。在构建具有许多依赖关系的大型开源系统时,当大多数故障发生时,添加可执行文件和文件的简单示例对理解这些中断毫无用处。

此外,许多使用CMake的项目支持水平较低,例如:不是针对问题和/或被放弃的项目特定论坛,并且感觉应该有一个公共论坛,以便“如何让CMAKE找到xxxx类型的问题”。

我不介意产生极低的生产力的感觉(基本上,如果想要获得可能会或可能不会编译,链接和/或随后以32位或64位代码运行的解决方案的日子,如果摆弄命令行的日子)我是元构建系统的新手,但在与Scons,NANT和其他人作为游戏开发人员进行了15年的C ++元建设后,我仍然不能确定CMake是否是一个精心设计的笑话。 OpenCV和Bullet都是项目的一个很好的例子,它可以更快地将文件拖到你自己喜欢的IDE中并开始编译,而不是花费几天时间搞乱CMake而没有明显的支持论坛。

1 个答案:

答案 0 :(得分:1)

  

有没有明显的理由为什么相同版本的CMake无法找到相同的包?

不同的安装方式可能会导致默认搜索路径的不同设置。您可以将CMAKE_PREFIX_PATH变量设置为/opt/local,然后找到您的所有包。

  

我假设/ opt / local在我的CMake GUI路径搜索路径中,因为它会在那里找到其他依赖项。

不完全正确。

对于搜索Google Flags,您的项目(Theia-SfM)使用随附的脚本FindGFlags.cmake,该脚本在/opt/local处明确搜索包(请参阅变量GFLAGS_CHECK_INCLUDE_DIRS的定义和用法)。

对于搜索ImageMagic,它使用标准CMake script,但不会在/opt/local处明确搜索。