2

我想在我写的一个小游戏的构建过程中使用scons。https://github.com/Dobiasd/Dron

我通常工作包括通过源目录进行递归,但我不想用 .o 文件污染 src 目录。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

如果有人能告诉我我做错了什么,那就太好了。:)

4

1 回答 1

3

使用 SCons VariantDir() 函数时,您必须引用源文件,就好像它们在 variant_dir 中一样,而不是在 source_dir 中。

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

于 2013-10-18T13:53:33.570 回答