0

通过 buildall.vc 批处理文件为 windows 构建 tk8.4.19-src 时。它显示以下错误:

rules.vc(449) : fatal error U1023: syntax error in expression
Stop.

我不知道解决方案。请帮忙。


编辑:调用 nmake 的 buildall.vc 文件

@echo off

::  This is an example batchfile for building everything. Please ::  edit this (or make your own) for your needs and wants using ::  the instructions for calling makefile.vc found in makefile.vc :: ::  RCS: @(#) $Id: buildall.vc.bat,v 1.4 2002/11/04 07:49:43 davygrvy Exp $

echo Sit back and have a cup of coffee while this grinds through ;) echo You asked for *everything*, remember? echo.

title Building Tk, please wait...

if "%MSVCDir%" == "" call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"  ::if "%MSVCDir%" == "" call "C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\bin\vcvars32.bat"



set INSTALLDIR =C:\Program Files\Tcl

:: Where is the Tcl source directory? set TCLDIR= "C:\Tcl\include\tcl8.5" ::set TCLDIR=..\..\tcl8.4 pause :: Build the normal stuff along with the help file. :: nmake -nologo -f makefile.vc release winhelp OPTS=none if errorlevel 1 goto error

:: Build the static core, dlls and shell. :: nmake -nologo -f makefile.vc release OPTS=static if errorlevel 1 goto error pause :: Build the special static libraries that use the dynamic runtime. :: nmake -nologo -f makefile.vc core OPTS=static,msvcrt if errorlevel 1 goto error

:: Build the core and shell for thread support. :: nmake -nologo -f makefile.vc release OPTS=threads if errorlevel 1 goto error

:: Build a static, thread support core library (no shell). :: nmake
-nologo -f makefile.vc core OPTS=static,threads if errorlevel 1 goto error

:: Build the special static libraries the use the dynamic runtime, :: but now with thread support. :: nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads if errorlevel 1 goto error

goto end

:error echo *** BOOM! ***

:end title Building Tk, please wait...DONE! echo DONE! pause

我正在使用 C++ 编译器标识为 MSVC 15.0.30729.1

C++ 编译器使用:Visual Studio 9 2008 Win32

4

3 回答 3

1

我在编译 tk 8.6.3 时遇到了同样的问题

rules.vc(514) : fatal error U1023: syntax error in expression

这是线

!if exist("$(_TCLDIR)\include\tcl.h")

我已经使用路径周围的引号设置了 TCLDIR 宏。删除引号使我的问题消失了。

于 2015-02-04T11:11:40.820 回答
0

如果我们查看Tcl 8.4.19 发行版中的第 449 行rules.vc,它看起来并不引人注目;在我看来,在它之前还有许多其他行在语法上相似。

如果我们看一下Tk 8.4.19 发行版中的第 449 行rules.vc,我觉得它没什么特别的;那里没有什么可以以其他前几行也不会做的方式大声喊出“我错了”。

如果我们查看您添加的(损坏的)代码,它似乎指的是 Tcl 8.5,或者可能是 Tk 8.5。Tcl 8.5.14Tk 8.5.14的等效行也没有什么特别之处。(选择这些版本是因为它们是您提出问题时的当前版本。)强烈建议您在构建 Tk 时不要混合不同版本的 Tcl 和 Tk(但 Tk可能会在之后加载到更高版本的 Tcl正在构建中;这更有可能使用 Tk 8.5 和 Tcl 8.6,其中至少需要一些努力来检查它是否偶尔有效)。

简而言之,我无法弄清楚为什么它可能会特别抱怨那条线

总而言之,你是唯一一个似乎有这个问题的人。还有其他人确实在 Windows 上使用这些文件进行构建(当我们在其中犯了真正的错误时他们会很快抱怨)所以我们有相当高的信心,在rules.vc你出现的任何版本中这都不是问题有报告。这意味着无论出现什么问题,很可能是由于您做了一些奇怪的事情而导致的问题。唉,这个世界上奇怪的东西太多了,而这个特殊的spoor对我来说是陌生的。

于 2014-04-27T11:36:12.300 回答
0

有同样的问题。当我确保目录 tcl8.6.9 和 tk8.6.9 位于路径中没有空白的位置(不在 C:\Program Files...中)并且设置环境变量 TCLDIR、TCL_LIBRARY 和 TK_LIBRARY 时消失AND NO " 围绕路径 (

set TCLDIR=C:\tcl8.6.9
REM Not!!! :  set TCLDIR="C:\tcl8.6.9"
set TCL_LIBRARY=C:\tcl8.6.9\library
set TK_LIBRARY=C:\tk8.6.9\library

)。现在编译工作。

于 2019-04-15T09:57:51.667 回答