Автоматическое включение объектных файлов с использованием Boost.build - PullRequest
1 голос
/ 25 февраля 2011

Я использую последнюю версию boost-build из boost 1.46. Учитывая main.cpp, который зависит от a.h и b.h, используя способность boost-build для автоматического определения зависимостей, мой джем-файл просто

exe my_prog : main.cpp ;

Но, если есть файл реализации, b.cpp, объект b.o не создается и не связывается. Я хотел бы, чтобы мои сценарии сборки были минимальными и не требовали настройки каждый раз, когда я добавляю новый файл. Итак, как я могу сделать это автоматически?

Отредактировано, чтобы отразить истинное намерение против того, что я просил.

1 Ответ

1 голос
/ 25 февраля 2011

Есть ли причина, по которой это не сработает?

exe my_prog : main.cpp b.cpp ;

Делать это так, как вы хотите, звучит больно и неприятно, особенно для тех, кто только начинает наращивать сборку. Плюс могут быть случаи, когда вам нужен только заголовок, а не cpp.

Если ваш код безупречно организован, и вам нужны только файлы в текущем каталоге, вы можете легко получить все файлы cpp:

exe my_prog : [ glob *.cpp ] ;

(Существуют и другие аргументы для glob, которые позволят вам отфильтровать файлы резервных копий / файлов восстановления, которые может создать ваш редактор. И есть другие версии glob, которые переходят в дочерние каталоги.)

Если у вас есть несколько файлов cpp, необходимых для нескольких конечных исполняемых файлов, вам лучше создать библиотеку с правилом lib и использовать ее в качестве одного из источников для вашего исполняемого файла.

lib blib : b.cpp ;
exe my_prog : main.cpp blib ;
...