README
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:14k
源码类别:

通讯编程

开发平台:

Visual C++

  1. Tcl/Tk Mac OS X README
  2. ----------------------
  3. RCS: @(#) $Id: README,v 1.6.2.15 2007/04/29 02:26:47 das Exp $
  4. This is the README file for the Mac OS X/Darwin version of Tcl/Tk.
  5. 1. Where to go for support
  6. --------------------------
  7. - The tcl-mac mailing list on sourceforge is the best place to ask questions
  8. specific to Tcl & Tk on Mac OS X:
  9. http://lists.sourceforge.net/lists/listinfo/tcl-mac
  10. (this page also has a link to searchable archives of the list, please check them
  11. before asking on the list, many questions have already been answered).
  12. - For general Tcl/Tk questions, the newsgroup comp.lang.tcl is your best bet:
  13. http://groups.google.com/group/comp.lang.tcl/
  14. - The Tcl'ers Wiki also has many pages dealing with Tcl & Tk on Mac OS X, see
  15. http://wiki.tcl.tk/references/3753!
  16. http://wiki.tcl.tk/references/8361!
  17. - Please report bugs with Tcl or Tk on Mac OS X to the sourceforge bug trackers:
  18. Tcl: http://sf.net/tracker/?func=add&group_id=10894&atid=110894
  19. Tk:  http://sf.net/tracker/?func=add&group_id=12997&atid=112997
  20. please make sure that your report Tk specific bugs to the tktoolkit project bug
  21. tracker rather than the tcl project bug tracker.
  22. Mac OS X specific bugs should usually be assigned to 'das' or 'wolfsuit'.
  23. 2. Using Tcl/Tk on Mac OS X
  24. ---------------------------
  25. - There are two versions of Tk available on Mac OS X: TkAqua using the native
  26. aqua widgets and look&feel, and TkX11 using the traditional unix X11 wigets.
  27. TkX11 requires an X11 server to be installed, such as Apple's X11 (which is
  28. available as an optional install on recent Mac OS X retail disks).
  29. TkAqua and TkX11 can be distinguished at runtime via [tk windowingsystem].
  30. - At a minimum, Mac OS X 10.1 is required to run Tcl and TkX11, and OS X 10.2 is
  31. required to run TkAqua. However OS X 10.3 or higher is recommended (certain
  32. [file] operations behave incorrectly on earlier releases).
  33. - Unless weak-linking is used, Tcl/Tk built on Mac OS X 10.x will not run on
  34. 10.y with y < x; on the other hand Tcl/Tk built on 10.y will always run on 10.x
  35. with y <= x (but without any of the fixes and optimizations that would be
  36. available in a binary built on 10.x).
  37. Weak-linking is available on OS X 10.2 or later, it additionally allows Tcl/Tk
  38. built on 10.x to run on any 10.y with x > y >= z (for a chosen z >= 2).
  39. - Wish checks the Resources/Scripts directory in its application bundle for a
  40. file called AppMain.tcl, if found it is used as the startup script and the
  41. Scripts folder is added to the auto_path. This can be used to emulate the old
  42. OS9 TclTk droplets.
  43. - If standard input is a special file of zero length (e.g. /dev/null), Wish
  44. brings up the Tk console window at startup. This is the case when double
  45. clicking Wish in the Finder (or using 'open Wish.app' from the Terminal).
  46. - Tcl extensions can be installed in any of:
  47. $HOME/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl
  48. $HOME/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks
  49. /System/Library/Frameworks (searched in that order).
  50. Given a potential package directory $pkg, Tcl on OSX checks for the file
  51. $pkg/Resources/Scripts/pkgIndex.tcl as well as the usual $pkg/pkgIndex.tcl.
  52. This allows building extensions as frameworks with all script files contained in
  53. the Resources/Scripts directory of the framework.
  54. - [load]able binary extensions can linked as either ordinary shared libraries
  55. (.dylib) or as MachO bundles (since 8.4.10/8.5a3); only bundles can be unloaded,
  56. and bundles are also loaded more efficiently from VFS (no temporary copy to the
  57. native filesystem required).
  58. - The 'deploy' target of macosx/GNUmakefile installs the html manpages into the
  59. standard documentation location in the Tcl/Tk frameworks:
  60. Tcl.framework/Resources/Documentation/Reference/Tcl
  61. Tk.framework/Resources/Documentation/Reference/Tk
  62. No nroff manpages are installed by default by the GNUmakefiles.
  63. - The Tcl and Tk frameworks can be installed in any of the system's standard
  64. framework directories:
  65. $HOME/Library/Frameworks /Library/Frameworks
  66. /Network/Library/Frameworks /System/Library/Frameworks
  67. - /usr/bin/wish8.x is a script that calls a copy of 'Wish' contained in
  68. Tk.framework/Resources
  69. - if 'Wish' is started from the Finder or via 'open', $argv contains a
  70. "-psn_XXXX" argument. This is the Wish's carbon process serial number, you may
  71. need to filter it out for cross platform compatibility of your scripts.
  72. - the env array is different when Wish is started from the Finder (i.e. via
  73. LaunchServices) than when it (or tclsh) is invoked from the Terminal, in
  74. particular PATH may not be what you expect. (Wish started by LaunchServices
  75. inherits loginwindow's environment variables, which are essentially those set in
  76. $HOME/.MacOSX/environment.plist, and are unrelated to those set in your shell).
  77. - As of Tk 8.4.7, TkAqua has a version of the low-level drawing primitives using
  78. the CoreGraphics routines - the code is primarily due to James Tittle. There
  79. were numerous problems with the QD version, mostly due to the different drawing
  80. model of QD & Tk. CG also trivially supports dashed lines, and the various end
  81. caps & miters. The old QD code is retained for now, just in case there are any
  82. compatibility problems. To switch back to the QD drawing, put
  83.     set tk::mac::useCGDrawing 0
  84. in your script before you do drawing.
  85. All CG drawing is antialiased by default, but (outline) linewidth can be used to
  86. control whether a line/shape is drawn antialiased. The antialiasing threshold is
  87. 0 by default (i.e. antialias everything), it can be changed by setting
  88. set tk::mac::CGAntialiasLimit <limit>
  89. in your script before drawing, in which case lines (or shapes with outlines)
  90. thinner than <limit> pixels will not be antialiased.
  91. - Quickdraw text antialiasing is enabled by default when available (from 10.1.5
  92. onwards). Changing the global boolean variable '::tk::mac::antialiasedtext'
  93. allows to dis/enable antialiasing on the fly from Tcl (even for existing text).
  94. - Scrollbars: There are two scrollbar variants in Aqua, normal & small. The
  95. normal scrollbar has a small dimension of 15, the small variant 11. Access to
  96. the small variant was added in Tk 8.4.2.
  97. - Cursors: You can now put up and spin the Classic MacOS spinner, and the
  98. counting hands and watch cursor. The way this is done is each of the spinners
  99. have a base name:
  100.     spinning: The circular B&W circular spinner
  101.     countinguphand: The counting up hand
  102.     countingdownhand: The counting down hand
  103.     countingupanddownhand: The counting up then down hand
  104.     watch: The watch cursor
  105. Then to get the sequential variants, add an integer to the end of the base name.
  106. So, for instance this code will spin the spinner:
  107.     proc spinCursor {widget count} {
  108. $widget configure -cursor spinning$count
  109. after 100 spinCursor [incr count]
  110.     }
  111. This was added in Tk 8.4.2
  112. 3. Building Tcl/Tk on Mac OS X
  113. ------------------------------
  114. - At least Mac OS X 10.1 is required to build Tcl and TkX11 and OS X 10.2 is
  115. required to build TkAqua. Apple's Developer Tools need to be installed (only the
  116. most recent version matching your OS release is supported). The Developer Tools
  117. installer is available on Mac OS X retail disks or is present in
  118. /Applications/Installers on Macs that came with OS X preinstalled. The most
  119. recent version can be downloaded from the ADC website http://connect.apple.com
  120. (after you register for free ADC membership).
  121. - Tcl/Tk are most easily built as Mac OS X frameworks via GNUmakefile in
  122. tcl/macosx and tk/macosx (see below for details), but can also be built with the
  123. standard unix configure and make buildsystem in tcl/unix resp. tk/unix as on any
  124. other unix platform (indeed, the GNUmakefiles are just wrappers around the unix
  125. buildsystem).
  126. The Mac OS X specific configure flags are --enable-aqua, --enable-framework and
  127. --disable-corefoundation (which disables CF and notably reverts to the standard
  128. select based notifier). Note that --enable-aqua is incompatible with
  129. --disable-corefoundation (for both Tcl and Tk configure).
  130. - It is also possible to build with Apple's IDE via the tk/macosx/Wish.pbproj
  131. project, this simply calls through to the tk/macosx/Makefile. It requires a
  132. build of the tcl/macosx/Tcl.pbproj project.
  133. - To build universal binaries, set CFLAGS as follows:
  134.     export CFLAGS="-arch ppc -arch i386 
  135. -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4"
  136. This requires Mac OS X 10.4 and Xcode 2.2 (_not_ Xcode 2.1) and will work on any
  137. of the architectures (the -isysroot flag is only required on PowerPC Tiger).
  138. Note that configure requires CFLAGS to contain a least one architecture that can
  139. be run on the build machine (i.e. ppc on PowerPC, ppc or i386 on Intel).
  140. Universal builds of Tk TEA extensions are also possible with CFLAGS set as
  141. above, they will be [load]able by universal as well as thin binaries of Tk.
  142. Note that while Tcl can be built for 64-bit architectures, neither TkAqua nor
  143. TkX11 can be built for 64-bit as the corresponding GUI libraries are not
  144. available for 64bit at present. However, linking a universal 'ppc i386' Tk
  145. binary against a universal 'ppc ppc64 i386 x86_64' Tcl binary works just fine.
  146. The Tk configure script automatically removes the 64-bit -arch flags from CFLAGS
  147. to facilitate universal building of both Tcl and Tk with the same CFLAGS; the
  148. same happens with configure in Tk extensions based on TEA 3.5 or later.
  149. - To enable weak-linking, set the MACOSX_DEPLOYMENT_TARGET environment variable
  150. to the minimal OS version (>= 10.2) the binaries should be able to run on, e.g:
  151.     export MACOSX_DEPLOYMENT_TARGET=10.2
  152. This requires Mac OS X 10.2 and gcc 3.1; if you have gcc 4 or later you can set
  153. CFLAGS instead:
  154.     export CFLAGS="-mmacosx-version-min=10.2"
  155. Support for weak-linking was added to the code for 8.4.14/8.5a5.
  156. Detailed Instructions for building with macosx/GNUmakefile
  157. ----------------------------------------------------------
  158. - Unpack the Tcl and Tk source release archives and place the tcl and tk source
  159. trees in a common parent directory.
  160. [ If you don't want have the two source trees in one directory, you'll need to ]
  161. [ create the following symbolic link for the build to work as setup by default ]
  162. [      ln -fs /path_to_tcl/build /path_to_tk/build        ]
  163. [ (where /path_to_{tcl,tk} is the directory containing the tcl resp. tk tree)  ]
  164. [ or you can pass an argument of BUILD_DIR=/somewhere to the tcl and tk make.  ]
  165. - The following instructions assume the Tcl and Tk source trees are named
  166. "tcl${ver}" and "tk${ver}", respectively, where ${ver} is a shell variable
  167. containing the Tcl and Tk version number (for example '8.4.12').
  168. Setup the shell variable as follows:
  169. set ver="8.4.12" ;: if your shell is csh
  170. ver="8.4.12"  ;: if your shell is sh
  171. The source trees will be named this way only if you are building from a release
  172. archive, if you are building from CVS, the version numbers will be missing; so
  173. set ${ver} to the empty string instead:
  174. set ver=""  ;: if your shell is csh
  175. ver=""  ;: if your shell is sh
  176. - The following steps will build Tcl and Tk from the Terminal, assuming you are
  177. located in the directory containing the tcl and tk source trees:
  178. make -C tcl${ver}/macosx
  179. make -C tk${ver}/macosx
  180. and the following will then install Tcl and Tk onto the root volume (admin
  181. password required):
  182. sudo make -C tcl${ver}/macosx install
  183. sudo make -C tk${ver}/macosx  install
  184. if you don't have the admin password, you can install into your home directory,
  185. instead by passing an INSTALL_ROOT argument to make:
  186. make -C tcl${ver}/macosx install INSTALL_ROOT="${HOME}/"
  187. make -C tk${ver}/macosx  install INSTALL_ROOT="${HOME}/"
  188. - The default Makefile targets will build _both_ debug and optimized versions of
  189. the Tcl and Tk frameworks with the standard convention of naming the debug
  190. library Tcl.framework/Tcl_debug resp. Tk.framework/Tk_debug.
  191. This allows switching to the debug libraries at runtime by setting
  192. export DYLD_IMAGE_SUFFIX=_debug
  193. (c.f. man dyld for more details)
  194. If you only want to build and install the debug or optimized build, use the
  195. 'develop' or 'deploy' target variants of the Makefiles, respectively.
  196. For example, to build and install only the optimized versions:
  197. make -C tcl${ver}/macosx deploy
  198. make -C tk${ver}/macosx deploy
  199. sudo make -C tcl${ver}/macosx install-deploy
  200. sudo make -C tk${ver}/macosx  install-deploy
  201. - The Makefiles can also build a version of 'Wish' that has the Tcl and Tk
  202. frameworks embedded in its application package. This allows for standalone
  203. deployment of the application with no installation required, e.g. from read-only
  204. media. To build & install in this manner, use the 'embedded' target variants of
  205. the Makefiles. For example, to build a standalone 'Wish.app'
  206. in ./embedded/Applications/Utilities:
  207. make -C tcl${ver}/macosx embedded
  208. make -C tk${ver}/macosx embedded
  209. sudo make -C tcl${ver}/macosx install-embedded INSTALL_ROOT=`pwd`/embedded/
  210. sudo make -C tk${ver}/macosx  install-embedded INSTALL_ROOT=`pwd`/embedded/
  211. Notes:
  212.   * if you've already built standard TclTkAqua, building embedded does not
  213.   require any new compiling or linking, so you can skip the first two makes.
  214.   (making relinking unnecessary was added in 8.4.2)
  215.   * the embedded frameworks include only optimized builds and no documentation.
  216.   * the standalone Wish has the directory Wish.app/Contents/lib in its
  217.   auto_path. Thus you can place tcl extensions in this directory (i.e. embed
  218.   them in the app package) and load them with [package require].
  219. - It is possible to build Tk against an installed Tcl.framework; but you will
  220. still need a tcl sourcetree in the location specified in TCL_SRC_DIR in
  221. Tcl.framework/tclConfig.sh. Also, linking with Tcl.framework has to work exactly
  222. as indicated in TCL_LIB_SPEC in Tcl.framework/tclConfig.sh.
  223. If you used non-default install locations for Tcl.framework, specify them as
  224. make overrides to the tk/macosx Makefile, e.g.
  225. make -C tk${ver}/macosx 
  226.     TCL_FRAMEWORK_DIR=$HOME/Library/Frameworks TCLSH_DIR=$HOME/usr/bin
  227. sudo make -C tk${ver}/macosx install 
  228.     TCL_FRAMEWORK_DIR=$HOME/Library/Frameworks TCLSH_DIR=$HOME/usr/bin
  229. The Makefile variables TCL_FRAMEWORK_DIR and TCLSH_DIR were added in Tk 8.4.3.