用户选项的 CMake 命令行帮助

7

我在我的CMakeLists.txt文件中有一些选项,可以通过命令行使用-D进行选择,就像这样:

# Set some options the user may choose
OPTION(USE_MPI "Use the MPI library for parallelization" OFF)
OPTION(USE_OPENMP "Use OpenMP for parallelization" OFF)
OPTION(TESTING "Enable testing of both Fortran and Python code" OFF)
OPTION(PYTHON_TOOLS "Build the python helper tools" OFF)
OPTION(BUILD_DOCS "Build the documentation; turns on PYTHON_TOOLS" OFF)

我可以使用类似以下方式激活它们之一:

$ cmake . -DUSE_MPI=ON

有时候我会忘记我选择的选项是什么。如果有一种类似于Python的argparse风格的自动化方式,可以在命令行上显示这些选项,那就太好了,比如一个-h标志。
是否有一种自动化生成特定CMakeLists.txt帮助文档的方法,并且可以使用某种-h--help标志调用该帮助? 我正在寻找能够给我这种行为的东西。
$ cmake . --help
USE_MPI - Use the MPI library for parallelization (Default: OFF)
USE_OPENMP - Use OpenMP for parallelization (Default: OFF)
TESTING - Enable testing of both Fortran and Python code (Default: OFF)
PYTHON_TOOLS - Build the python helper tools (Default: OFF)
BUILD_DOCS - Build the documentation; turns on PYTHON_TOOLS (Default: OFF)

如果没有自动化的方法,是否有一种简单的方法可以将 --help-h 传递给 CMakeLists.txt,以便我可以手动编写帮助消息?

1个回答

5

我认为最接近你所寻找的是-L命令行参数。运行cmake . -LH应该会配置你的项目,然后输出所有缓存的非高级变量以及它们的帮助字符串。

i参数还允许您查看option的当前值,但这实际上是在命令行“向导模式”下运行cmake-它配置项目,并要求您逐个设置/更新每个变量。


哦,那很不错!当我这样做时,它还会输出一些由其他东西设置的变量(例如CMAKE_OSX_DEPLOYMENT_TARGET)。您知道是否可能仅过滤出我设置的变量吗? - SethMMorton
@SethMMorton - 不好意思,我不知道有任何方法可以这样做!也许一个合理的解决方法是为您自己的所有选项制定命名约定,以便它们都具有共同的前缀。这样,它们至少会在“-L”输出中分组在一起。 - Fraser
是的,一个又一个伟大的想法! - SethMMorton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接