用于用户选项的CMake命令行帮助

用于用户选项的CMake命令行帮助,cmake,Cmake,我的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

我的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
有时我忘记了我选择的选项是什么。如果有某种类型的
-h
标志,我可以用来以自动化的方式(以python的
argparse
的样式)在命令行上显示它们,那就太好了

是否有一种自动生成特定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,以便我可以手动编写帮助消息?

我认为最接近您要查找的是命令行arg。运行
cmake-LH
应该配置项目,然后输出所有缓存的非高级变量及其帮助字符串


arg还允许您查看
选项的当前值,但这实际上是在命令行“向导模式”下运行cmake,它配置项目,要求您一次设置/更新一个变量。

ooh,太好了!当我这样做时,它还输出一些由其他东西设置的变量(比如CMAKE_OSX_DEPLOYMENT_TARGET)。你知道是否可以只过滤掉我设置的那些吗?@SethMMorton-不,我不知道有什么方法可以做到-对不起!也许一个合理的解决方法是为所有您自己的选项建立一个命名约定,以便它们都有一个共同的前缀。这样,至少在
-L
输出中将它们组合在一起。是的,一个又一个好主意!