代码之家  ›  专栏  ›  技术社区  ›  ruipacheco

在qtcreator中运行时,cmake找不到忍者

  •  0
  • ruipacheco  · 技术社区  · 6 年前

    我有一个在cmakelists.txt文件中查找程序的调用,以查找到忍者的路径。当我通过命令行运行忍者时,返回正确的值,但当我在qtcreator中运行忍者时失败:

    find_program(
        CMAKE_MAKE_PROGRAM
        NAME ninja
        PATHS /opt/local/bin
      )
      message(${CMAKE_MAKE_PROGRAM})
    

    在忍者中,这个回归:

    /opt/local/bin/ninja
    

    在qtcreator中,返回:

    /usr/bin/make
    

    为什么cmake找不到$path中存在的内容?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Kane    6 年前

    从文件中 find_program() :

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

    以你为例 CMAKE_MAKE_PROGRAM 恰好缓存为 /usr/bin/make (可能是在qtcreator设置的某个点上),所以 find_program() 什么也不做。

    make ninja 将使用 CMake generators .

        2
  •  0
  •   Tsyvarev    6 年前

    变量 CMAKE_MAKE_PROGRAM 缓存的 通过CMAKE发电机。 find_program 除非缓存变量包含 *-NOTFOUND .

    您需要在 发现程序 呼叫,然后更新 CMAKE_MAKE_PROGRAM 随变量 set(CACHE ... FORCE) :

    set(CMAKE_MAKE_PROGRAM <new-value> CACHE FILEPATH "" FORCE)
    

    注意,这种转换 制作程序 make ninja 不是正确的改变方式 CMake generator . 你需要通过一个适当的CMAKE发生器 -G 选择权 cmake 本身。

    推荐文章