Я переключился с make на tup и пытаюсь заставить его создавать разные варианты (отладка и производство).Мое исходное дерево выглядит так:
| .tup
| bin
| build_debug
| | tup.config
| build_default
| | tup.config
| include (headers directory)
| src (source files directory)
| | runs (directory containing additional source files)
| Tupfile
И мое Tupfile
:
preload bin
preload src
preload src/runs
COMPILER = g++
ifeq (@(DEBUG),y)
FLAGS = -Wall -std=c++17 -O0 -g
else
FLAGS = -Wall -std=c++17 -O3 -march=native -flto -pipe
endif
: foreach src/*.cc src/runs/*.cc |> $(COMPILER) -c %f -o %o $(FLAGS) |> %B.o
: src/*.o src/runs/*.o |> $(COMPILER) %f -o %o $(FLAGS) |> bin/a.out
Я хочу, чтобы это создавало объектные файлы в каталогах src
и двоичный файл в bin
каталогов внутри каталогов build*
.
Когда я запускаю tup
, он создает объектные файлы непосредственно внутри каталогов build*
(т.е. не внутри каталогов build*/src
) и не создает никаких двоичных файлов..
Что я делаю не так?
Редактировать : При сборке внутри базового каталога без каких-либо каталогов build*
он создает двоичный файл, но также размещает объектные файлывнутри базового каталога, а не внутри src
.