c++ - 用户友好的 CMake 库路径 (CCMake)

标签 c++ boost cmake

我开始创建一个 CMake 项目,必须对非开发人员友好。我知道这并不容易,但我求助于使用 ccmake,他们似乎对此很满意。

然而,不知何故,我需要在文本图形用户界面中显示我所有的库根路径。他们需要看到选项,我必须遵守(其中一些在 windows 下)。

我已经尝试过通常的方法,例如使用 Boost:

# Boost
FIND_PACKAGE(Boost 1.54.0 COMPONENTS program_options REQUIRED)
SET(Boost_DIR          "${Boost_DIR}"          CACHE STRING "Boost installation directory")
SET(Boost_INCLUDE_DIRS "${Boost_INCLUDE_DIRS}" CACHE STRING "Boost headers directory")
SET(Boost_LIBRARY_DIRS "${Boost_LIBRARY_DIRS}" CACHE STRING "Boost libraries directory")

这很好用,但我当然只想使用 Boost_DIR。最理想的方式是让他们看到预先填充了 FIND_PACKAGE 发现的选项。

我听不懂。

当然FIND_PACKAGE找到了Boost,并设置了header和lib目录,它们出现在ccmake中。奇怪的是,Boost_DIR 没有出现在文本 gui 中!当然,除非您按 t,但这些并不是我正在处理的真正“高级用户”。此外,在我的 mac 上(使用自制软件)仍然是空的(Boost_DIR-NOTFOUND)。这会惹恼人们,因为他们期望 /usr/local

您会怎么做,以尽可能地对用户友好?包括“Windows 友好”:)

最佳答案

CMake 很有可能找到 Boost_INCLUDE_DIRS 和 Boost_LIBRARY_DIRS,而 Boost_DIR 仍然找不到。

如果您将 Boost 下载到某个不起眼的地方,然后构建并安装(bjam install),至少在 Windows 上会发生这种情况。在 Windows 上,“安装”会将 header 和库复制到“C:\Boost\include”和“C:\Boost\libs”之类的地方。

CMake 知道查看“C:\Boost”,在这种情况下它会初始化 Boost_INCLUDE_DIRS 和 Boost_LIBRARY_DIRS 但不会初始化 Boost_DIR。

也许您可以从 GUI 中隐藏 BOOST_DIR 以避免与您的客户混淆。

关于c++ - 用户友好的 CMake 库路径 (CCMake),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143981/

相关文章:

c++ - 现代 CMake (3.8+) - FindCUDA 已弃用,非 .cu 文件呢?

c++ - 我找不到错误

C++11/g++:lambda 中需要 std::qualifier,尽管给出了 "using namespace std"

boost - MinGW 和 Boost C++ 1.54.0 警告

包含 Irrlicht 静态库时的 C++ 编译错误

C++ 构造函数未定义

c++ - 柠檬图库的边权重

c++ - 解码哈夫曼树

c++ - Boost hana 获取第一个匹配项的索引

c++ - 指针 vector 。 BOOST序列化