2013-10-17 26 views
2

我想使用scons来编写我制作的小游戏的构建过程。 https://github.com/Dobiasd/DronVariantDir用于递归scons C++构建

我通常工作,包括通过源目录递归,但我想不污染src目录与.o文件。 VariantDir应该帮助我,但以下SConstruct不起作用(.o文件仍处于./src)

import fnmatch 
import os 

matches = [] 
for root, dirnames, filenames in os.walk('src/'): 
    for filename in filenames: 
     if fnmatch.fnmatch(filename, '*.cpp'): 
      matches.append(str(os.path.join(root, filename))) 

env = Environment() 
env.Append(LIBS = ['sfml-audio', 'sfml-graphics','sfml-window','sfml-system']) 
env.Append(LIBPATH = '/usr/local/lib') 
env.Append(CXXFLAGS = '-std=c++11 -Wall -Wextra -pedantic -Werror') 
env.VariantDir('build', 'src') 
env.Program(target = 'Dron', source = matches) 

汇编(我的意料):

g++ -o obj/main.o -c -std=c++11 -Wall -Wextra -pedantic -Werror src/main.cpp 

汇编(现实):

g++ -o src/main.o -c -std=c++11 -Wall -Wextra -pedantic -Werror src/main.cpp 

如果有人能告诉我我做错了什么,那将会很棒。 :)

+0

太好了,谢谢。它(https://github.com/Dobiasd/Dron/blob/master/SConstruct)就像一个魅力。如果你想要,你可以发表你的评论作为答案,我会接受它。 :) –

回答

3

当使用SCons VariantDir()函数时,您必须引用您的源文件,就好像它们位于variant_dir而不是source_dir。

Here是一个不同的问题的答案,应该作为一个很好的例子,应该有所帮助。