3

我正在尝试调试命令行 CMake 失败。相同的 CMake 文件在 Qt Creator 中工作,Qt Creator 窗口中的参数与我在命令行中输入的相匹配。

这让我觉得 Qt Creator 正在添加一些额外的参数,这是有道理的,因为生成器下拉菜单有几个选项可以指定架构和 CMake 版本。

有没有办法让 Qt Creator 执行 CMake 命令以产生所需的结果,特别是传递给 CMake 可执行文件的参数?

我发现一篇关于查看 CMakeCache 文件以进行取证的帖子,但这仅证明存在差异,它并不能很快告诉我要更改哪些参数。

4

1 回答 1

4

尝试将以下块添加到 CMakeLists.txt 的末尾并再次从 Qt Creator 运行 CMake。CMake 输出应列出已通过-D命令行参数传递的所有变量。

get_cmake_property(CacheVars CACHE_VARIABLES)
foreach(CacheVar ${CacheVars})
  get_property(CacheVarHelpString CACHE ${CacheVar} PROPERTY HELPSTRING)
  if(CacheVarHelpString STREQUAL "No help, variable specified on the command line.")
    get_property(CacheVarType CACHE ${CacheVar} PROPERTY TYPE)
    if(CacheVarType STREQUAL "UNINITIALIZED")
      set(CacheVarType)
    else()
      set(CacheVarType :${CacheVarType})
    endif()
    set(CMakeArgs "${CMakeArgs} -D${CacheVar}${CacheVarType}=\"${${CacheVar}}\"")
  endif()
endforeach()
message("CMakeArgs: ${CMakeArgs}")

有关详细信息,请参阅此答案

这不会显示通过-Garg 选择了哪个生成器(如果有)。要找到它,您需要CMAKE_GENERATOR:INTERNAL=...在 CMakeCache.txt 中查找

如果这不能帮助您确定整体问题,您可能应该听取@arrowdodger 的建议并发布有关您遇到的错误和您的两个构建环境的更多详细信息。例如,从源代码树的子目录运行 CMake可能会导致错误。

于 2012-10-25T22:52:20.350 回答