Использование Boost.build для включения библиотеки - PullRequest
1 голос
/ 27 сентября 2010

Я использую 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 Ответ

1 голос
/ 27 сентября 2010

Используя две ссылки, 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 ;
...