Варианты Tup не строятся правильно - PullRequest
3 голосов
/ 08 мая 2019

Я переключился с 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.

1 Ответ

0 голосов
/ 08 мая 2019

Так что я решил это с помощью руководства по tup.

% B расширяется только до имени файла, а не имени файла, включая относительный путь файла к basedir, поэтому объектные файлы были созданы в базовом каталоге, и двоичный файл не может быть сгенерирован (я думал, что это сработало, потому что У меня все еще были старые объектные файлы, которые были сгенерированы с помощью make).

Я переписал свой Tupfile на:

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 |> $(COMPILER) -c %f -o %o $(FLAGS) |> src/%B.o
: foreach src/runs/*.cc |> $(COMPILER) -c %f -o %o $(FLAGS) |> src/runs/%B.o
: src/*.o src/runs/*.o |> $(COMPILER) %f -o %o $(FLAGS) |> bin/a.out

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...