URN Logo
UNIX Resources » Linux » China Linux Forum » Python 编 程 » 1 » python脚本求助(SOS)
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
python脚本求助(SOS)
python脚本求助(SOS) - woodandwood [2007-04-20 10:19 | 5,772 byte(s)]
 
Re: python脚本求助(SOS) - passworld [2007-04-21 01:57 | 41 byte(s)]
 
Re: python脚本求助(SOS) - woodandwood [2007-04-24 12:02 | 37 byte(s)]
 
Subject: python脚本求助(SOS)
Author: woodandwood    Posted: 2007-04-20 10:19    Length: 5,772 byte(s)
[Original] [Print] [Top]
emotion源码包里有个SConstruct.py脚本,用来实现对emotion/src下源码的解释,最后生成emotion这个二进制的可执行文件。它的内容如下:
# The author disclaims copyright to the included source code. It is placed in
# the public domain. In place of a lengthy legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
# $Id: SConstruct.py,v 1.30 2003/10/04 23:50:22 pyromage Exp $
#

import os
from string import *

def CheckQt (context, qtdir, qt = 'qt'):
context.Message ('Checking for ' + qt + ' in ' + qtdir + ' ... ')

# save old environment
oldlibs = context.env['LIBS']
oldlibpath = context.env['LIBPATH']
oldcpppath = context.env['CPPPATH']

# update environment to try stuff
context.env.Append(LIBS=qt, LIBPATH=qtdir+'/lib',
CPPPATH=qtdir+'/include')

# try to link in the new env
ret = context.TryLink("""
#include <qapp.h>
int main(int argc, char **argv) {
QApplication qapp (argc, argv);
return 0;
}
""", ".cpp")

# cleanup env if we failed
if not ret:
context.env.Replace (LIBS=oldlibs)
context.env.Replace (LIBPATH=oldlibpath)
context.env.Replace (CPPPATH=oldcpppath)

context.Result(ret)
return ret

######################################################################

CacheDir ('.cache')

env = Environment()

# Initialize the environment with empty variables
env.Append (LIBS='')
env.Append (LIBPATH='')
env.Append (CPPPATH='')
env.Append (CXXFLAGS='-g')

conf = Configure (env, {'CheckQt' : CheckQt})

# Check for Qt
haveqt = 0
mocprog = "moc"
if(os.environ.has_key ('QTDIR')):
if (conf.CheckQt (os.environ['QTDIR'], 'qt') or
conf.CheckQt (os.environ['QTDIR'], 'qt-mt')):
haveqt = 1
mocprog = os.environ['QTDIR'] + '/bin/moc'

if (not haveqt):
print '*** Qt is required to build emotion, but was not found. Try'
print '*** running ./configure with different values.'
print '***'
print '*** You did run ./configure, right?'
Exit(1)

env = conf.Finish()

# Initialize a Builder that knows how to use moc to make source files
moc = Builder (action=mocprog + " -o $TARGET $SOURCE", suffix=".moc.cpp",
src_suffix=".h")
env.Append(BUILDERS = {'QtMoc' : moc } )

# Source files to be generated by moc
mocadvancedoptions = env.QtMoc(source = '#/src/advancedoptions.h' )
mocconsoledialog = env.QtMoc(source = '#/src/consoledialog.h' )
moccontroller = env.QtMoc(source = '#/src/controller.h' )
mocdvddialog = env.QtMoc(source = '#/src/dvddialog.h' )
mocimagebutton = env.QtMoc(source = '#/src/imagebutton.h' )
mocmainwindow = env.QtMoc(source = '#/src/mainwindow.h' )
mocmixer = env.QtMoc(source = '#/src/mixer.h' )
mocmplayer = env.QtMoc(source = '#/src/mplayer.h' )
mocoptionsdialog = env.QtMoc(source = '#/src/optionsdialog.h' )
mocopendialog = env.QtMoc(source = '#/src/opendialog.h' )
mocplaylist = env.QtMoc(source = '#/src/playlist.h' )
mocplaylistmodel = env.QtMoc(source = '#/src/playlistmodel.h' )

# Complete list of sources needed to build
emotionSources = [
'#/src/aboutdialog.cpp',
'#/src/advancedoptions.cpp',
mocadvancedoptions,
'#/src/configuration.cpp',
'#/src/console.cpp',
'#/src/consoledialog.cpp',
mocconsoledialog,
'#/src/controller.cpp',
moccontroller,
'#/src/dvddialog.cpp',
mocdvddialog,
'#/src/emotionapp.cpp',
'#/src/errormediator.cpp',
'#/src/exception.cpp',
'#/src/fileconfiguration.cpp',
'#/src/globalconfiguration.cpp',
'#/src/iconset.cpp',
'#/src/imagebutton.cpp',
mocimagebutton,
'#/src/main.cpp',
'#/src/mainwindow.cpp',
mocmainwindow,
'#/src/mixer.cpp',
mocmixer,
'#/src/mplayer.cpp',
mocmplayer,
'#/src/mplayerfile.cpp',
'#/src/opendialog.cpp',
mocopendialog,
'#/src/optionsdialog.cpp',
mocoptionsdialog,
'#/src/playlist.cpp',
mocplaylist,
'#/src/playlistmodel.cpp',
mocplaylistmodel,
'#/src/playoptions.cpp',
'#/src/sighandler.cpp',
]
env.Program(target='emotion', source=emotionSources)

# Setup default target
Default('emotion')

在这个脚本里有几个关键步骤:
CacheDir ('.cache')
env = Environment()
conf = Configure (env, {'CheckQt' : CheckQt})
env = conf.Finish()
env.Program(target='emotion', source=emotionSources)
Default('emotion')
像这些函数都是pthon内置的吗?查了很多python的资料,都没有找到相关说明,比如Environment(),Configure(),Default()这些都是什么东东?
向各位高手求助!多谢!
[Original] [Print] [Top]
Subject: Re: python脚本求助(SOS)
Author: passworld    Posted: 2007-04-21 01:57    Length: 41 byte(s)
[Original] [Print] [Top]
那是 SCons 里的东西,类似于 make 的工具。
----
[Original] [Print] [Top]
Subject: Re: python脚本求助(SOS)
Author: woodandwood    Posted: 2007-04-24 12:02    Length: 37 byte(s)
[Original] [Print] [Top]
在python里都喜欢用SCons来解释程序吗?
[Original] [Print] [Top]
« Previous thread
python能不能嵌套调用另外一个python程序
Python 编 程
1
Next thread »
如何在VM虚拟机的linux系统中安装python
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:10:50, cost 0.06086802482605 ms.