scons 编译一个简单的多文件夹工程

scons 编译一个简单的多文件夹工程

在这个目录下编译

lyj@lyj-virtual-machine:~/test/scons_test/App$ ls
build  SConstruct  src

创建一个 SConstruct 的文件,内容如下,执行 scons

#加载操作系统模块,能调用当前操作系统的一些操作,例如读写文件
import os 
#获取当前的环境变量,需要在这个指定交叉编译工具
env = Environment(CC = '/home/lyj/Tools/SDK/2015.4/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-gcc',
                  CXX = '/home/lyj/Tools/SDK/2015.4/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-g++',
                  CCFLAGS = Split("-g -Wall"))

srcDirs=[]
srcFiles = []

libDirs=[]

#获取子文件夹, 调用OS 模块自带的的函数 walk 自动遍历,具体用法百度
for root, dirs, files in os.walk(".", topdown=False):
    for name in dirs:
        srcDirs.append(os.path.join(root, name))
        print(srcDirs[-1])
              
#获取C 或 CPP 文件
for dir in srcDirs:
   for suffix in ['.cpp', '.c']:
      srcFiles += Glob( dir + '/*' + suffix )

#指定第三方库文件文件夹
libDirs.append('./src/lib-snmp')

#指定依赖的库文件,注意Split第一个是大写
libFiles = Split("pthread m dl crypt snmp pcre")

#生成目标文件
#env.Program('目标文件', C 或 CPP 文件, 头文件, 链接的库, 库的查找地址)
env.Program('./build/test.elf', srcFiles, CPPPATH=srcDirs, LIBS=libFiles, LIBPATH=libDirs)

觉得有用的点歌赞

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值