如何查看Qt Creator执行的CMake命令行语句?

时间:2012-10-25 18:10:02

标签: cmake qt-creator

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

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

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

我找到一篇文章讨论了查看CMakeCache文件以进行一些取证,但这只能证明存在差异,它并没有很快告诉我要改变的参数。

1 个答案:

答案 0 :(得分:2)

尝试将以下块添加到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}")

有关详细信息,请参阅this answer

这不会通过-G arg显示选择了哪个生成器(如果有)。要找到它,您需要在CMakeCache.txt

中查找CMAKE_GENERATOR:INTERNAL=...

如果这无法帮助您确定整体问题,您应该注意@ arrowdodger的建议,并发布有关您正在获得的错误和两个构建环境的更多详细信息。例如,只需从源树的子目录运行CMake就可以导致错误