Использование Boost.build для включения библиотеки
Я использую boost.build для компиляции кода C++, который ссылается на библиотеку CGNS, но у меня возникли некоторые трудности с использованием boost.build для этого. CGNS компилируется в библиотеку с папкой для платформы, например [путь]/LINUX для сборки linux. Я хотел бы включить библиотеку [путь]/LINUX/libcgns.a в сборку. Я хотел бы, чтобы это было кроссплатформенным, так чтобы каталог LINUX использовался для сборок LINUX, а каталог WIN использовался для сборок WIN (я полагаю, что для этого есть условия для платформы).
Мне удалось включить заголовочные файлы библиотеки, но как мне выполнить условное включение библиотеки? Мой простой тест Jamroot.jam, где main.cpp - это всего лишь пример из документации CGNS.
exe CGNSTest
: src/main.cpp
: <include>../Dependencies/cgnslib ;
Кроме того, я хотел бы встроить библиотеку CGNS в свой двоичный файл (статическая ссылка?)
1 ответ
Используя две ссылки: http://www.highscore.de/cpp/boostbuild/ и http://www.boost.org/doc/tools/build/doc/userman.pdf, я создал что-то, что работает, но это не может быть идеальным.
lib cgns
: # sources
: # requirements
<name>cgns
<target-os>linux:<search>../Dependencies/cgnslib/LINUX
<target-os>windows:<search>../Dependencies/cgnslib/WIN32
: # default-build
: # usage-requirements
<include>./../Dependencies/cgnslib ;
alias static_libraries : cgns : <link>static ;
exe CGNSTest
: src/main.cpp static_libraries
: <target-os>windows:<linkflags>/NODEFAULTLIB:MSVCRTD ;