我开始创建一个 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/