C++ 导出cmake gui选项

C++ 导出cmake gui选项,c++,ubuntu,build,cmake,cmake-gui,C++,Ubuntu,Build,Cmake,Cmake Gui,我有一个库,里面有很多不同的配置选项。我们通常使用cmakegui配置构建,并勾选一些复选框 我想使用cmake将其自动化为.sh脚本 e、 g. 在GUI中->选择一组不同的选项 等效的cmake命令->cmake-D cmake_XXX=X-D cmake_XXY=XXY[这里有一组选项]… 我如何才能找到我从GUI中选择的任意配置的“等效”cmake命令行命令?只需读取构建目录根目录中名为CMakeCache.txt(iirc)的文件,并查看其中的变量名只需读取名为CMakeCache.t

我有一个库,里面有很多不同的配置选项。我们通常使用
cmakegui
配置构建,并勾选一些复选框

我想使用
cmake
将其自动化为
.sh
脚本

e、 g.
在GUI中->选择一组不同的选项
等效的cmake命令->
cmake-D cmake_XXX=X-D cmake_XXY=XXY[这里有一组选项]…


我如何才能找到我从GUI中选择的任意配置的“等效”cmake命令行命令?

只需读取构建目录根目录中名为CMakeCache.txt(iirc)的文件,并查看其中的变量名

只需读取名为CMakeCache.txt(iirc)的文件即可在build目录的根目录中,请参见此处的变量名称(
-D
选项),说明了缓存变量的等效cmake命令。请注意,因此请注意始终检查最新版本

基本上:

-D<var>:<type>=<value>
-D:=

您还必须指定缓存变量的类型,缓存方式与通过cmake gui过程相同。请注意,只有在第一次使用变量定义时才有必要:如果不再指定,将使用缓存的值。

将解释缓存变量的等效cmake命令(
-D
选项)。请注意,因此请注意始终检查最新版本

基本上:

-D<var>:<type>=<value>
-D:=

您还必须指定缓存变量的类型,缓存方式与通过cmake gui过程相同。请注意,只有在第一次使用时才需要变量定义:如果不再指定,将使用缓存的值。

您可以编写一个包含所有要使用
set()
设置的变量的文件,并通过
-C
将此文件传递给CMake调用:

cmake -C <fileWithInitialValues> <pathToSrcDir>
cmake-C
文档:

您可以编写一个包含所有要使用
set()设置的变量的文件,并通过
-C
将该文件传递给CMake调用:

cmake -C <fileWithInitialValues> <pathToSrcDir>
cmake-C
文档:

有同样的问题。。。正如你所要求的,我在菜单中查找了一些选项并找到了它菜单工具->显示我的更改

打开带有编辑字段的对话框,其中包含命令行选项或缓存文件选项的内容


p、 我使用的cmake 3.11.1有同样的问题。。。正如你所要求的,我在菜单中查找了一些选项并找到了它菜单工具->显示我的更改

打开带有编辑字段的对话框,其中包含命令行选项或缓存文件选项的内容



p、 我使用了cmake 3.11.1

一旦单击“配置”按钮,cmake gui就会在构建目录中生成CMakeVars.txt和cmakcache.txt文件。它们会缓存您通过GUI配置的所有变量。

cmake GUI会在您单击“配置”按钮后在构建目录中生成CMakeVars.txt和CMAKECHACHE.txt文件。它们缓存您通过GUI配置的所有变量。

选项在那里,但您仍然需要将命令放在一起。将需要一些脚本来组装等效的命令。您最好组装等效的.cmake文件-设置所有变量并将其处理到您的脚本中。您可以从项目的CMakeLists.txt顶部包含该文件,如果该文件存在,也可以有条件地包含该文件,以便在非脚本化使用时不会出现错误-case@Xocoatzin从CMakeCache.txt中提取值并在cmake命令行中传递它们是没有意义的:如果不使用Antonio,是的,但关键是要从缓存中学习这些变量名一次,然后开发一个脚本,多次运行(可能来自其他脚本),以创建和配置没有缓存的新构建目录yet@PeterK也许你是对的,但是让我们看看OP是怎么说的。选项在那里,但是你仍然需要把命令放在一起。将需要一些脚本来组装等效的命令。您最好组装等效的.cmake文件-设置所有变量并将其处理到您的脚本中。您可以从项目的CMakeLists.txt顶部包含该文件,如果该文件存在,也可以有条件地包含该文件,以便在非脚本化使用时不会出现错误-case@Xocoatzin从CMakeCache.txt中提取值并在cmake命令行中传递它们是没有意义的:如果不使用Antonio,是的,但关键是要从缓存中学习这些变量名一次,然后开发一个脚本,多次运行(可能来自其他脚本),以创建和配置没有缓存的新构建目录yet@PeterK也许你是对的,但是让我们看看OP是怎么说的。@PeterK它会工作的,但是有一个不同的行为。请检查。因此,它将像往常一样工作,但在cmake gui中无法访问,而这个问题的重点是如何摆脱上述gui=)这并没有回答问题。OP所问的是,如何获得与在CMake GUI上看到的相同的
make
命令。@Royi True。正如我在问题的评论中提到的,起点应该是在没有任何手动配置的情况下生成的CMakeCache.txt与在从cmake gui更改后生成的CMakeCache.txt之间的差异。一旦你看了这一点,你就可以开始思考如何自动处理它了。如果您在这方面有困难,您可以在获得此输入数据后发布新问题,并且您在处理它时遇到了更具体的问题。@PeterK它可以工作,但具有不同的行为。请检查。因此,它将像往常一样工作,但在cmake gui中无法访问,问题的重点是如何摆脱上述gui=)这并不能回答问题