0

我有一个项目,它由子目录中的许多文件组成。我有一个简单的 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 文件并将它们包含在编译过程中。

4

1 回答 1

3

这是如何在 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() 函数的信息。

于 2013-10-28T06:34:33.853 回答