gpt4 book ai didi

c++ - 编写 scons 脚本来处理许多子目录中文件的编译

转载 作者:行者123 更新时间:2023-11-30 01:56:35 25 4
gpt4 key购买 nike

我有一个项目,其中包含子目录中的许多文件。我有一个简单的 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')])

Here是将 SDL 与 SCons 结合使用的链接。

这是关于 SCons ParseConfig() function 的信息.

关于c++ - 编写 scons 脚本来处理许多子目录中文件的编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19626250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com