Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在QtCreator中运行时,CMake找不到忍者_Cmake_Qt Creator_Ninja - Fatal编程技术网

在QtCreator中运行时,CMake找不到忍者

在QtCreator中运行时,CMake找不到忍者,cmake,qt-creator,ninja,Cmake,Qt Creator,Ninja,我打电话在我的CMakeLists.txt文件中查找_程序,以找到忍者的路径。当我通过命令行运行ninja时,返回正确的值,但当我在QtCreator中运行时失败: find_program( CMAKE_MAKE_PROGRAM NAME ninja PATHS /opt/local/bin ) message(${CMAKE_MAKE_PROGRAM}) 在《忍者》中,这种回归: /opt/local/bin/ninja /usr/bin/make 在此

我打电话在我的CMakeLists.txt文件中查找_程序,以找到忍者的路径。当我通过命令行运行ninja时,返回正确的值,但当我在QtCreator中运行时失败:

find_program(
    CMAKE_MAKE_PROGRAM
    NAME ninja
    PATHS /opt/local/bin
  )
  message(${CMAKE_MAKE_PROGRAM})
在《忍者》中,这种回归:

/opt/local/bin/ninja
/usr/bin/make
在此情况下,返回:

/opt/local/bin/ninja
/usr/bin/make
为什么CMake找不到$PATH中存在的内容?

该变量由CMake生成器缓存<代码>查找程序不更新缓存变量,除非它包含
*-NOTFOUND

您需要在
find_program
调用中使用其他变量,然后使用
set(CACHE…FORCE)
更新
CMAKE_MAKE_program
变量:

set(CMAKE\u MAKE\u程序缓存文件路径”“强制)

请注意,将
CMAKE\u MAKE\u程序
MAKE
切换到
ninja
不是一种正确的更改方式。您需要通过
-G
选项将正确的CMake生成器传递到
CMake
本身。

来自以下文档:

将创建一个名为VAR的缓存条目来存储此命令的结果。如果找到程序,结果将存储在变量中,除非清除变量,否则不会重复搜索

在您的情况下,
CMAKE\u MAKE\u程序
恰好被缓存为
/usr/bin/MAKE
(可能是在某个点上由QtCreator设置的),因此
find\u PROGRAM()
什么也不做

make
ninja
之间切换的正确方法是使用