我在 cmake build 目录中,想构建项目,但不知道 cmake 是否使用-G Unix\ Makefile或运行-G Ninja。
现在我知道我可能对此一无所知并使用cmake --build .,但是当我想提供其他选项时,cmake --build . -- SOMETHING我应该知道我是否应该提供 gnumake 或 ninja 选项。
作为可能的解决方案,我发现我可以只检查 aMakefile或build.ninja文件的存在。或者在CMakeCache.txtfor 中使用grep CMAKE_GENERATOR。
编辑:
在一个类似的问题中,这里解释了传递给 cmake with 的值-D可以用cmake -LA -N. 但这并没有列出-G参数。
我想知道是否有更合适的方法(就像cmake -LA -N不是 grepping 变量值一样)。
您引用了两种可能的解决方案:
检查构建系统文件是否存在。这不是通用的解决方案,因为它仅适用于某些生成器,但它可能适用于您的情况。这不适用于 Visual Studio(例如,除非您解析 Visual Studio 文件本身),因为每个生成器版本都会创建相同的文件名。
Grep CMakeCache.txt forCMAKE_GENERATOR . 依赖于特定于平台的工具 (grep) 以及 CMakeCache.txt 的位置。在大多数情况下,两者都可能不是问题。
对第二个选项稍作修改,使其更加可移植,是将其缓存CMAKE_GENERATOR在另一个变量中:
set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}" CACHE STRING "Expose CMAKE_GENERATOR" FORCE)
Run Code Online (Sandbox Code Playgroud)
然后,当您使用 时cmake -L,USED_CMAKE_GENERATOR就会出现。
| 归档时间: |
|
| 查看次数: |
3650 次 |
| 最近记录: |