You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CMake通过execute_process获取npm版本失败的问题咨询

解决CMake execute_process无法找到npm的问题

我之前也碰到过类似的情况,明明在VS工具命令行里能正常运行npm,但CMake就是找不到,给你几个可行的解决思路:

  • 直接指定npm的完整路径
    既然你已经用where npm找到了npm的位置,不如直接把完整路径写到execute_process里,彻底避开环境变量加载的问题。比如如果你的npm路径是C:\Program Files\nodejs\npm.cmd,可以改成:

    execute_process(COMMAND "C:\\Program Files\\nodejs\\npm.cmd" --version OUTPUT_VARIABLE NPM_VERSION)
    message("npm: ${NPM_VERSION}")
    

    注意路径里的空格要加引号,而且Windows下路径分隔符要用双反斜杠转义。

  • 验证CMake运行环境的PATH变量
    有时候CMake运行的环境和你手动打开的VS命令行环境不一样,导致PATH里没有npm的路径。可以在CMake脚本里先打印当前的PATH,看看有没有包含nodejs的目录:

    execute_process(COMMAND echo %PATH% OUTPUT_VARIABLE CURRENT_PATH)
    message("Current PATH: ${CURRENT_PATH}")
    

    如果输出里找不到nodejs的路径,那说明CMake没拿到正确的环境变量,这时候你可以手动在CMake里添加路径:

    set(ENV{PATH} "C:\\Program Files\\nodejs;$ENV{PATH}")
    execute_process(COMMAND npm --version OUTPUT_VARIABLE NPM_VERSION)
    
  • 在正确的工具链环境下运行CMake
    不要直接在Visual Studio IDE里或者普通cmd里运行CMake,而是打开VS 2019的x64原生工具命令提示符,在这个窗口里切换到你的项目目录,然后运行CMake的配置和构建命令,这样CMake会继承这个窗口的所有环境变量,包括nodejs的路径。

  • 确保环境变量修改生效
    如果你刚修改了系统环境变量,记得重启所有相关的程序——比如Visual Studio、CMake GUI(如果用的话),甚至重启电脑。很多程序只会在启动时加载一次环境变量,不重启的话新的路径不会生效。

内容的提问来源于stack exchange,提问作者Mateusz

火山引擎 最新活动