Zastanawiam się nad użyciem SCons dla nowego projektu. Wygląda naprawdę dobrze, choć uważam, że jest to bardzo mylące.Dlaczego program SCons VariantDir() nie umieszcza danych wyjściowych w podanym katalogu?
Mam prosty projekt z garścią plików źródłowych C w jednym katalogu i chcę budować w "normalnym" iw "profilu" trybie - z dwoma różnymi zestawami opcji do gcc. Chcę, aby wyjścia przechodziły odpowiednio w normalny/i profil/katalogi.
Do testowania, cofnąłem się do tylko jednego pliku źródłowego, t.c, który ma main()
w nim. Mój plik SConstruct
jest w tym samym katalogu, a wygląda to tak:
normal = DefaultEnvironment(tools=['mingw'], CCFLAGS = '-O2')
normal.VariantDir('release', '.', duplicate=0)
normal.Program('t', ['t.c'])
#profile = normal.Clone(CCFLAGS='-O2 -pg', LINKFLAGS = '-pg')
#profile.VariantDir('profile', '.', duplicate=0)
#profile.Program('t', ['t.c'])
Kiedy biegnę scons, ja spodziewałem się położyć do t.exe do zwalniania /, ale umieszcza je w bieżącym katalogu . I nie mogę go uruchomić w ogóle, z pominięciem 3 linii profilu - jeśli to zrobię, otrzymam ten błąd:
scons: *** Dla tego samego celu określono dwa środowiska z różnymi akcjami: na
W zasadzie nie jestem pewien, dlaczego moje wywołania VariantDir() nie mówią scons, aby umieścić dane wyjściowe w określonym katalogu wyjściowym, release
.
(Czytałem trochę w dokumentach i grupach dyskusyjnych, ale nic, co by odpowiadało na to pytanie. Najbliższy, do którego przyszedłem, to this page, który opisuje podobną rzecz, ale wiąże się z oddzielnym katalogiem src/i dwoma osobne pliki scons i importowanie/eksportowanie zmiennych między nimi.) To nie wydaje się przyjemne.)
Tak, jest to jedyny istotny moment, kiedy nie jest używany SConscript. –