Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake OSX命令行与GUI的区别_C++_Xcode_Macos_Opencv_Cmake - Fatal编程技术网

C++ CMake OSX命令行与GUI的区别

C++ CMake OSX命令行与GUI的区别,c++,xcode,macos,opencv,cmake,C++,Xcode,Macos,Opencv,Cmake,我正在尝试将项目Theia SfM配置为在Mac上使用XCode进行编译 使用通过Macports通过XCode安装的CMake 3.5.1,一旦安装了适当的依赖项,软件包就可以很好地进行配置和构建,例如: mkdir Build cmake -G XCode .. -- Generating done -- Build files have been written to: /Users/alex/src/TheiaSfM/build 如果使用从KitWare下载并通过应用程序安装的CM

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

使用通过Macports通过XCode安装的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使用问题的活跃论坛?CMAKE的整个过程似乎记录得非常糟糕,并且以无数令人困惑的方式失败。添加可执行文件和文件的简单示例对于理解这些中断是无用的,因为大多数故障发生在构建具有许多依赖关系的大型开源系统时

此外,许多使用CMake的项目的支持水平较低,例如,没有针对特定项目的问题论坛和/或被放弃,而且感觉应该有一个针对一般“如何让CMake查找xxxx类型问题”的公共论坛

<>我不介意这种低效率的感觉(基本上,在使用命令行的时候,如果我是新的或32位代码的话,可以在15或64位代码中编译、链接和/或随后运行的解决方案),但是在Scons、NAND等其他C++开发人员作为游戏开发人员之后,坦率地说,我还不能确定CMake是否是一个精心设计的笑话。OpenCV和Bullet都是一个很好的项目示例,在这些项目中,只需将文件拖到自己喜欢的IDE中并开始编译,比在没有明显支持论坛的情况下花上几天时间处理CMake要快得多

相同版本的CMake找不到相同的包有什么明显的原因吗

不同的安装方式可能会导致默认搜索路径的不同设置。您可以将
CMAKE\u PREFIX\u PATH
变量设置为
/opt/local
,将在那里找到您的所有软件包

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

不完全正确

对于搜索Google标志,您的项目(Theia SfM)使用附带的脚本,该脚本在
/opt/local
处明确搜索包(请参见变量
GFLAGS\u CHECK\u INCLUDE\u DIRS


对于搜索ImageMagic,它使用标准的CMake,而不是在
/opt/local

上进行明确的搜索。对CMake的官方支持是通过邮件列表处理的。有关用法问题,请参阅。不太先进,但社区在那里很活跃。你的CMakeGUI在查找ImageMagick时出现的配置问题,在我看来确实像是一个CMake bug。请参阅向CMake社区报告错误。请更正上面的答案。此外,为了完整起见,这里是bugtracker线程(最终结论:不是bug)。但是,知道Macports应该被解释为“Mac终端外壳端口”是值得的,除非您已经覆盖了系统默认值。