Building Boost для статического соединения (MinGW)
Я создаю Boost (я использую System и FileSystem) для MinGW с помощью bjam:
bjam --toolset=gcc stage
И он строит отлично, но я хочу иметь возможность статически ссылаться на него (у меня должен быть один файл для конечного продукта), поэтому я попытался:
bjam --link=static --toolset=gcc stage
Но я получаю тот же результат. Любые идеи?
отредактируйте второй вопрос подряд Я ответил на несколько минут после публикации: p угадать, что я оставлю это здесь для других.
bjam --build-type=complete --toolset=gcc stage
Будет уверенно строить как динамические, так и статические.
Ответы
Ответ 1
Я думаю, что ссылка - это свойство, а не опция для bjam. Это означает, что перед ним не должно быть.
Это моя командная строка для создания только статических библиотек (visual С++ хотя):
bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static
Сопоставляя это с вашей исходной командой сборки, я бы сказал, что она должна выглядеть примерно так:
bjam --toolset=gcc link=static stage
или, возможно:
bjam stage --toolset=gcc link=static
Попробуйте запустить
bjam --help
для получения дополнительной информации о свойствах и параметрах для bjam.
Ответ 2
Просто хочу отметить, что с новым повышением (февраль 2011 г.) вам также нужно построить bjam. По какой-то причине текущий загружаемый bjam не работает чисто.
Итак, сначала:
cd ...\boost_1_45_0\tools\build\v2\engine\src
build.bat mingw
Вам нужно добавить bjam в PATH (из панели управления, а не только из командной строки). Тогда
cd ...\boost_1_45_0\
bjam --build-type=complete --toolset=gcc stage
Моя настройка - Vista, Boost 1.45, MinGW 4.5 и создание из cmd.exe not msys.
http://code-slim-jim.blogspot.com/2011/02/boost-in-vista-using-mingw-and-cmdexe.html
Ответ 3
Я не создал это самостоятельно в MinGW, но я считаю, что ваша первая сборка будет выводить как динамические, так и статические библиотеки, а вторая - только статические, поэтому, если вы не очистите каталоги сборки между сборками, она, вероятно, будет выглядеть одинаково.
Когда вы пишете "У меня должен быть один файл...", вы имеете в виду, что вам нужна одна библиотека, содержащая все библиотеки boost? Если это так, я подозреваю, что вам, возможно, придется "собрать" их вместе.
Ответ 4
Я использую следующую командную строку для создания как статически связанных, так и динамически связанных версий boost:
bjam "-sBUILD=debug release <runtime-link>static/dynamic <threading>multi" stage
Это делается с визуальным С++ на окнах YMMV.