gpt4 book ai didi

c++ - CMake OSX 命令行与 GUI 差异

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:29 30 4
gpt4 key购买 nike

我正在尝试配置 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 明显安装(通过 macports)在/opt/local/bin 中。

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 的项目的支持水平较低,例如不是针对问题和/或被遗弃的项目特定论坛,感觉应该有一个公共(public)论坛来讨论“我如何让 CMAKE 找到 xxxx 类型的问题”。

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

最佳答案

Is there any obvious reason why identical versions of CMake would fail to find the same package?

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

I'm assuming /opt/local is in my CMake GUI paths search paths, because further up it finds other dependencies there.

不完全正确。

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

为了搜索 ImageMagic,它使用标准 CMake script ,它不会在 /opt/local 中明确搜索。

关于c++ - CMake OSX 命令行与 GUI 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36556088/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com