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)
觉得有用的点歌赞