下面是我在windows7中运行“scons”编译器时的错误消息:
-----------------------------------------------------------------------------------
'cl' is not recognized as an internal or external command,
operable program or batch file.
scons: *** [out\windows-x86-MD-unicode-vs2008-rel\obj-static\src\featuresets\ada pters\im-history\AddToChatRoomHistoryVisitor.obj] Error 1
scons: building terminated because of errors.
-----------------------------------------------------------------------------------
我已经添加了环境变量的路径,但仍然遇到这个问题。
以下是环境变量的PATH信息:
--------------------------------------------------------------------------------------------
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v
1.0\;C:\Program Files\CREDANT\Shield v7.1\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Fil
es\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Python27;C:\cygwin64\bin
;C:\Python27\scons-2.3.1;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program File
s\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Progra
m Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Python27\Scripts;C:\Program Files (x86)\Microso
ft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
--------------------------------------------------------------------------------------------
cl.exe 可执行文件的位置不在系统PATH环境变量中。
换句话说,cmd.exe 命令行处理器已被要求运行 cl.exe 可执行文件,但它找不到它。它不在 PATH 中或未安装。
我已经添加了环境变量的路径,但仍然遇到这个问题。
要测试此功能,请打开命令提示符并输入:
cl.exe -?
SCons 具有逻辑来查找 Visual Studio 安装的位置,并通过检查注册表和默认安装位置来设置 Visual Studio 工具所需的路径和其他环境变量。
如果您失败了,那么您应该生成调试日志并将其粘贴到某处供我们查看。
用途:
set SCONS_MSCOMMON_DEBUG=%TEMP%\SCONS_MSVS_DEBUG.log
然后从同一个 shell 运行 scons。 日志将位于
%TEMP%\SCONS_MSVS_DEBUG.log
您也可以尝试最新版本的 SCons 2.4.1,因为我注意到更高版本中对 MSVS/MSVC 进行了一些修复。但理论上2.3.1应该找到Visual Studio 2010..
只需在窗口中搜索 cl.exe,并将该路径添加到 PATH 变量中,保存即可。关闭现有的打开命令并在执行 cl.exe 之前重新打开它。希望这会起作用。
我遇到了同样的问题,并从@bdbaddog答案中找到了更好的解决方法,以从
set SCONS_MSCOMMON_DEBUG=%TEMP%\SCONS_MSVS_DEBUG.log
获取调试日志SCons似乎找到了cl.exe
00073ms:MSCommon/vc.py:_check_cl_exists_in_vc_dir#588:checking for cl.exe at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\Hostx64\x64\cl.exe:
00073ms:MSCommon/vc.py:_check_cl_exists_in_vc_dir#590:found cl.exe!:
并且 scons env
env['ENV']['PATH']
具有 cl.exe
路径,但它不使用它,所以我只是使用 scons 路径更新了会话路径,如下所示,它起作用了
os.environ['PATH'] = env['ENV']['PATH']