Как связать проект boost.build с определенной статической библиотекой

Я использую boost.build для своего проекта. Конечно, я использую сам Boost. Также для целей тестирования я использую библиотеку google-test со своим проектом. Я должен связать свой проект со статической библиотекой google-test. Я нашел обходной путь, чтобы сделать это для MinGW (для Linux также работает gcc)

exe foo : $(IMPORTANT_PART) $(TEST_UTILITY_PART) : <toolset>gcc <linkflags>"../../libs/gtest-1.6.0/libs/gtest_main.a" <linkflags>-static <linkflags>-lpthread ;

Это выглядит некрасиво, но это работает. Правило для msvc выглядит намного более безобразным

exe foo : $(IMPORTANT_PART) $(TEST_UTILITY_PART) : <toolset>msvc <linkflags>/LIBPATH:../../libs/gtest-1.6.0/libs <linkflags>/DEFAULTLIB:gtest_main-mdd.lib
<linkflags>/DEFAULTLIB:gtestd-md.lib
;

Есть ли более естественный способ связать цель с внешней статической библиотекой в ​​файле проекта boost.build.


Постскриптум Конечно, использование google-test и boost mix пахнет не очень хорошо, но в любом случае есть много внешних библиотек, которые не охватывают области, которые boost не охватывает.

ТИА

3

Решение

Большой! Спасибо человеку, который указал мне http://www.boost.org/boost-build2/doc/html/bbv2/tutorial/prebuilt.html стр. (комментарий исчез) Кажется, я прочитал эту страницу не внимательно. И целевой lib со свойством file делает то, что я искал. Спасибо!


Что касается использования google test и boost build, я сделал это следующим образом: я сделал Jamfile для google-test. Это очень просто:

gtest.lib/Jamfile
project gtest_main
: requirements <include>../../../libs/gtest-1.6.0/include
<include>../../../libs/gtest-1.6.0/
: source-location ../../../libs/gtest-1.6.0
: build-dir ../../../libs/gtest-1.6.0/bin.b2 ;

lib gtest_main : src/gtest_main.cc src/gtest-all.cc : <link>static ;

Затем, где-то в моем файле проекта:

use-project / gtest: ./gtest.lib;

и упоминание // gtest в разделе требований проекта.

1

Другие решения

Других решений пока нет …