确定cmake项目生成器的正确方法

时间:2016-09-10 16:26:32

标签: cmake

我在cmake构建目录中并希望构建项目,但不知道cmake是否与-G Unix\ Makefile-G Ninja一起运行。

现在我知道我可以对此无知并使用cmake --build .,但是当我想提供其他选项cmake --build . -- SOMETHING时,我应该知道是否应该提供gnumake或ninja选项。

作为可能的解决方案,我发现我可以检查是否存在Makefilebuild.ninja文件。或者CMakeCache.txt CMAKE_GENERATOR中的grep。

修改

在类似的问题here中,解释了可以使用-D查询传递给cmake -LA -N的cmake的值。但是这并没有列出-G参数。

我想知道是否有更合适的方式(就像cmake -LA -N而不是为变量值进行grepping)。

1 个答案:

答案 0 :(得分:1)

您已经引用了两种可能的解决方案:

  • 检查构建系统文件的存在。不是一般的解决方案,因为它只适用于某些生成器,但它可能适用于您的情况。这不适用于Visual Studio(例如,除非您自己解析Visual Studio文件),因为每个生成器版本都会创建相同的文件名。

  • Grep CMakeCache.txt for CMAKE_GENERATOR 。依赖于特定于平台的工具(grep)以及CMakeCache.txt的位置。在大多数情况下,两者都不是问题。

稍微修改第二个选项,使其更具可移植性,是将CMAKE_GENERATOR缓存到另一个变量中:

set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}" CACHE STRING "Expose CMAKE_GENERATOR" FORCE)

然后,当您使用cmake -L时,USED_CMAKE_GENERATOR将会显示。