编写 scons 脚本来处理许多子目录中的文件编译
Writing scons script to handle compilation of files in many subdirectories
我有一个项目,它由子目录中的许多文件组成。我有一个简单的Makefile来处理编译。它看起来像这样:
CC = g++ -Wall -ansi -pedantic
all:
$(CC) -O2 engine/core/*.cpp engine/objects3d/*.cpp engine/display/*.cpp engine/io /*.cpp engine/math/*.cpp engine/messages/*.cpp *.cpp -o project1 -lGL -lGLU -lX11 `sdl-config --cflags --libs`
clean:
@echo Cleaning up...
@rm project1
@echo Done.
但是我需要迁移到SCons。我不知道如何编写一个脚本来自动处理查找子目录中的所有 *.cpp 文件并将它们包含在编译过程中。
这是如何在SCons中执行Makefile中的内容。你应该把这个Python代码放在项目根目录下一个名为SConstruct
的文件中,然后简单地执行scons
。要清理,请执行scons -c
env = Environment()
env.Append(CPPFLAGS=['-Wall', '-ansi', '-pedantic', '-O2', '-lGL', '-lGLU', '-lX11'])
# Determine compiler and linker flags for SDL
env.ParseConfig('sdl-config --cflags')
env.ParseConfig('sdl-config --libs')
# Remember that the SCons Glob() function is not recursive
env.Program(target='project1',
source=[Glob('engine/core/*.cpp'),
Glob('engine/objects3d/*.cpp'),
Glob('engine/display/*.cpp)',
Glob('engine/io/*.cpp'),
Glob('engine/math/*.cpp'),
Glob('engine/messages/*.cpp'),
Glob('*.cpp')])
下面是将 SDL 与 SCons 结合使用的链接。
这是关于SCons ParseConfig()函数的信息。
相关文章:
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何使用命令提示符、记事本和 MinGW 使用主文件、头文件和实现文件编译C++程序?
- 无论如何可以将webm / mp4文件编译/记忆为.exe程序吗?(C++)
- 从生成文件编译错误:"Unable to open output file" ..."No such file or directory"
- 如何使用 GLFW 预编译的二进制文件编译 Visual Studio 2019 发布版本
- Arduino IDE中自定义库类的.h文件编译错误的原因是什么
- makefile和错误将与大型项目分开的文件编译
- 如何使用生成文件编译具有多个目录的 c++ 项目
- 我可以将Visual Studio 2015头文件编译成dll并在VS2013中使用它吗?
- 使用Bazel将C 文件编译为python.h
- 使用 .a 文件编译简单的C++文件
- OpenCV 3.2 文件编译
- 如何从多个 cpp 文件编译 WebAssembly
- 从多个文件编译可以"undefined reference"
- 使用静态依赖性为共享二进制文件编译语法需要更加清晰
- 将Gsoap Src文件编译到我的项目中
- 如何用多个文件编译make下的dlib
- 字段的类型不完整,从多个文件编译
- 强制将特定文件编译为Objective-C/文件类型,但将整个项目编译为Objective C++
- OpenGLES 标头(包括 Availability.h)可防止 CPP 文件编译