当前位置:首页 » 编程语言 » sconsnopython

sconsnopython

发布时间: 2022-11-07 22:42:33

❶ Pycharm,显示no,python at…怎么办

出现这个问题的原因目前知道的有两个:

1、本地环境中没有安装Python,或者远程设置也没有;

2、安装的pycharm的版本和你当前Python的版本不匹配也会出现这个问题;

❷ 请教Scons python 编译问题

一、概述

scons是一个Python写的自动化构建工具,和GNU make相比优点明显:
1、移植性:python能运行的地方,就能运行scons
2、扩展性:理论上scons只是提供了python的类,scons使用者可以在这个类的基础上做所有python能做的事情。比如想把一个已经使用了Makefile大型工程切换到scons,就可以保留原来的Makefile,并用python解析Makefile中的编译选项、源/目标文件等,作为参数传递给scons,完成编译。
3、智能:Scons继承了autoconf/automake的功能,自动解析系统的include路径、typedef等;“以全局的观点来看所有的依赖关系”

二、scons文件

scons中可能出现的文件:
SConstruct,Sconstruct,sconstruct,SConscript

scons将在当前目录以下次序 SConstruct,Sconstruct,sconstruct 来搜索配置文件,从读取的第一个文件中读取相关配置。
在配置文件SConstruct中可以使用函数SConscript()函数来定附属的配置文件。按惯例,这些附属配置文件被命名为”SConscript”,当然也可以使用任意其它名字。

三、scons的命令行参数
scons: 执行SConstruct中脚本
scons -c clean
scons -Q 只显示编译信息,去除多余的打印信息
scons -Q --implicit-cache hello 保存依赖关系
--implicit-deps-changed 强制更新依赖关系
--implicit-deps-unchanged 强制使用原先的依赖关系,即使已经改变

四、SConstruct提供的方法

1、Program:生成可执行文件

Program('hello.c') 编译hello.c可执行文件,根据系统自动生成(hello.exe on Windows; hello on POSIX)
Program('hello','hello.c') 指定Output文件名(hello.exe on Windows; hello on POSIX)
Program(['hello.c', 'file1.c', 'file2.c']) 编译多个文件,Output文件名以第一个文件命名
Program(source = "hello.c",target = "hello")
Program(target = "hello" , source = "hello.c")
Program('hello', Split('hello.c file1.c file2.c')) 编译多个文件

Program(Glob("*.c"))
src = ["hello.c","foo.c"];Program(src)

2、Object:生成目标文件

Object('hello.c') 编译hello.c目标文件,根据系统自动生成(hello.obj on Windows; hello.o on POSIX)

3、Library:生成静态/动态库文件

Library('foo', ['f1.c', 'f2.c', 'f3.c']) 编译library
SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c']) 编译 shared library
StaticLibrary('bar', ['f4.c', 'f5.c', 'f6.c']) 编译 static library

库的使用:

Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.') 连接库,不需加后缀或是前缀

4、SourceSignatures:判断源文件是否修改
SourceSignatures('MD5') 根据内容是否改变,默认方式
SourceSignatures('timestamp') 根据修改时间

5、TargetSignatures:判断目标文件是否改变
TargetSignatures('build') 根据编译结果
TargetSignatures('content') 根据文件内容,如果只是加了句注释,将不会被重新编译

6、Ignore:忽略依赖关系

Ignore(hello, 'hello.h') 忽略某个依赖关系

7、Depends:明确依赖关系

Depends(hello, 'other_file') 明确依赖关系

8、SConscript:scons的配置文件。

源文件的目录结构如下:
src:
| SConstruct
|test.cpp
| mA(目录):
| SConscript
| func.cpp
其中test.cpp为主文件,中调用func.cpp中定义的函数

SConstruct内容如下:

[cpp]view plain

  • subobj=SConscript(['mA/SConscript'])

  • obj=subobj+Object(Glob("*.cpp"))

  • Program("test",list(obj))


  • SConscript内容 :

  • [cpp]view plain

  • obj=Object(Glob("*.cpp"))

  • Return("obj")


  • 上例中,在主目录中执行 scons就可以编译整个"工程"。SConstruct编译主目录中的test.cpp,并通过SConscript编译mA目录下的源文件,并最终生成可执行文件;SConscript用于编译mA中的func.cpp并把生成的func.o传递给主目录的SConstruct。

  • 10.env:环境变量
    环境变量用于设置在编译过程中的各种参数,可以用下面的SConstruct打印环境变量的所有信息(实际上env就是一个python字典)
    可以使用如下的SConstruct查看环境变量的内容:

    [cpp]view plain

  • env=Environment()

  • dict=env.Dictionary()

  • keys=dict.keys()

  • keys.sort()

  • forkeyinkeys:

  • print"constructionvariable='%s',value='%s'"%(key,dict[key])


  • 环境变量的使用:

  • env = Environment() #创建默认的环境变量,默认scons会按编译器的默认选项来进行编译

  • import os

  • env = Environment(CC = 'gcc',CCFLAGS = '-O2') #创建并设置环境 变量

  • env.Program('foo.c')
  • 环境变量的复制:
    env = Environment(CC = 'gcc')
    opt = env.Clone(CCFLAGS = '-O2')
    dbg = env.Clone(CCFLAGS = '-g')

    环境变量的替换:
    env = Environment(CCFLAGS = '-DDEFINE1')
    env.Replace(CCFLAGS = '-DDEFINE2')
    env.Program('foo.c')
    环境变量的输入输出:用于统一多目录源文件的编译选项,如:
    src:
    | SConstruct
    | libstlport.a
    | test.cpp
    | include(目录):
    | foo.h
    | mA(目录):
    | SConscript
    |func.cpp

    test.cpp和mA/func.cpp都引用了include/foo.h,test.cpp调用了mA/func.cpp的功能函数,其中include/foo.h中定义了一个包含string类型的类。

    SConstruct如下:

    [cpp]view plain

  • env=Environment()

  • flags=env.ParseFlags(['-pthread-I/usr/include/stlport','-L.'])

  • env.MergeFlags(class_flags)

  • subobj=SConscript(['mA/SConscript'])

  • obj=subobj+env.Object(Glob("*.cpp"))

  • env.Program("test",list(obj),LIBS=['libstlport.a'])

  • mA/SConscrip如下:

    [cpp]view plain

  • obj=Object(Glob("*.cpp"))

  • Return("obj")


  • 不出意外的话上边的工程编译可以通过,但是运行的时候会Aborted。因为test.cpp,mA/func.cpp都使用了包含string类型的那个类,但是由于编译环境的不同,test.cpp认为string变量的大小是24字节, mA/func.cpp认为string变量的大小是4个字节(libstlport.a捣的鬼)。

    解决问题的办法就是环境变量输出,修改SConstruct和mA/SConscript如下:
    SConstruct:

    [cpp]view plain

  • env=Environment()

  • flags=env.ParseFlags(['-pthread-I/usr/include/stlport','-L.'])

  • env.MergeFlags(class_flags)

  • Export('env')

  • subobj=SConscript(['mA/SConscript'],exports='env')

  • obj=subobj+env.Object(Glob("*.cpp"))

  • env.Program("test",list(obj),LIBS=['libstlport.a'])


  • mA/SConscript:

❸ 如何确定ubuntu是否安装scons

scons是一个Python写的自动化构建工具,需要安装python和scons后才能运行,能够跨平台。其集成功能类似于autoconf/automake ,是一个简洁可靠的工具。现在很多系统都自带python 所以直接安装scons即可。

❹ 如何在Windows上安装python

第一步:下载Python安装包

在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包;

第二步:安装

A.双击下载好的安装包,弹出如下界面:

找到系统变量中“Path”一项,选中后点击“编辑”;将之前安装的phtyon的完整路径加到最后面,注意要在完整的路径前加一个“;”,然后点击“确定”,保存所做的修改,这样,环境变量就设置好了;

设置完成后,可以按照上面的方法进行测试,以确保环境变量设置正确;

小结:

上面是python的安装方法,适合初学者的学习,安装完成后,通常我们还要安装pycharm,PyCharm是一种Python IDE,我们在编写python程序时,通常用该工具进行开发,调试和管理工程等,我们会持续介绍,由浅入深,请添加到收藏,谢谢您的关注


❺ 如何将scons工具集成到python中

在Windows或者Linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上编译选项options(如SConstruct所在的路径)。观察scons.bat这个脚本,可以在其他Python代码中,将SCONS工具当作一个函数来调用。这个函数就是Scons.Script.main(),这个main函数将解析命令行中的编译选项,通过sys.argv[1:]来传入。所以只需修改这个函数,就可以以函数的方式调用,不需要通过如Popen等方式在代码中启动scons。
先找到SCONS安装的目录,如C:\\Python27\Scons-2.3.1包,将Scons\Script\Main.py中main()函数声明中,添加一个传入参数,变为:
def main(args_):
同时将_exec_main(Parser,Values)声明,也变为:
__exec_main(args_,Parser,Values)
然后main(args_)通过调用__exec_main(args_,Parser,Values),将参数传给__exec_main,在__exec_main中再将sys.argv[1:]替换为args.split().
修改完Main.py之后,执行如下,实现替换二进制源文件(Main.pyc):
>>import py_compile
>>py_compile(r‘C:\\Python27\\Scons-2.3.1\\Scons\\Script\\Main.py‘)

使用如下代码测试:
>>import os
>>import sys
>>sys.path=[os.path.join(sys.prefix,‘Scons-2.3.1‘)]+sys.path
>>import Scons.Script
>>Scons.Script.main(‘.‘)
Scons工具正常使用。

❻ .scons结尾的文件是什么

scons是一个Python写的自动化构建工具文件,需要安装python和scons后才能运行

❼ 请教Scons python 编译问题

哈哈,解决问题的方法不可思议,我看了半天main.py后,就把那2个代码SConstruct 和SConscript拷到python的根目录下,居然编译一大半,不过还有问题,请帮助我;提示如下
E:\svn_rt-thread\rt-thread\bsp\mini2440>scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build\bsp
armcc -o build\bsp\application.o -c --device DARMSS9 --apcs=interwork --diag_sup
press=870 -I"C:\Keil\ARM\BIN30/ARM/RV31/INC" -g -O0 -IE:\svn_rt-thread\rt-thread
\include -IE:\svn_rt-thread\rt-thread\libcpu\arm\s3c24x0 -IE:\svn_rt-thread\rt-t
hread\libcpu\arm\common -I. -IE:\svn_rt-thread\rt-thread -IE:\svn_rt-thread\rt-t
hread\components\finsh -IE:\svn_rt-thread\rt-thread\components\dfs -IE:\svn_rt-t
hread\rt-thread\components\dfs\include -IE:\svn_rt-thread\rt-thread\components\r
tgui\include -IE:\svn_rt-thread\rt-thread\components\rgtui\common -IE:\svn_rt-th
read\rt-thread\components\rtgui\server -IE:\svn_rt-thread\rt-thread\components\r
tgui\widgets application.c
'armcc' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
scons: *** [build\bsp\application.o] Error 1
scons: building terminated because of errors.

E:\svn_rt-thread\rt-thread\bsp\mini2440>
以下图片

❽ no Python console is currently selected to run 该怎么办

在python的设置Project Interpreter选项中选择对应版本的解释器,具体操作如下:

1、打开程序后,错误提示右边有一个蓝色的字体,点击字体开始配置。

❾ 最近刚入手Pycharm,可是一运行下面就显示No Python at'XXXXX'那位大神能帮忙解决下

路径问题,请将python安装路径换为不包含中文的,然后重新运行试一下。
如果不是中文路径问题,请检查目标路径是否有python。

热点内容
安卓手机涨价怎么办 发布:2025-01-11 23:27:17 浏览:711
三消游戏服务器搭建 发布:2025-01-11 23:20:01 浏览:245
c语言的函数不可单独进行编译 发布:2025-01-11 23:12:33 浏览:17
怎么查信用卡查询密码 发布:2025-01-11 23:11:08 浏览:572
javaexcel源码 发布:2025-01-11 23:11:04 浏览:557
讨论会脚本 发布:2025-01-11 23:09:27 浏览:573
test服务器搭建 发布:2025-01-11 23:03:22 浏览:421
微信里的密码和账号在哪里 发布:2025-01-11 22:46:04 浏览:752
java字符串个数统计 发布:2025-01-11 22:45:05 浏览:543
完美国际2捏脸数据库 发布:2025-01-11 22:45:04 浏览:281