У меня есть кодовая база c ++, которая мне нужна для сборки версий для windows и unix. Важно, чтобы исполняемый файл windows работал без установленного Cygwin или подобного. О, и я пытаюсь добиться этого с помощью Ubuntu.
Я пытался выяснить, как заставить буст-билд позаботиться об этом, но до сих пор не дотянулся. Для простоты предположим, что структура этого проекта:
root/
|- src/
| |- core/
| | |- number.cpp
| | |- number.hpp
| |- main.cpp
|- jamroot
Пытаясь заставить boost-build производить двоичные файлы Windows в качестве первого шага, я создаю файл user-config.jam в своем домашнем каталоге, содержащий следующее:
using gcc : 4.4 : i586-mingw32msvc-g++ : <rc>i586-mingw32msvc-windres <archiver>i586-mingw32msvc-ar ;
Мой файл jamroot выглядит так:
exe hello :
[ glob-tree *.cpp ]
: : <target-os>windows
;
Но когда я запускаю bjam
, я получаю исполняемый файл Unix (без расширения), но не исполняемый файл Windows. Переименование приложения с расширением .exe и запуск на Windows не работает. Я пробовал различные варианты для bjam, например bjam --toolset=gcc --target-os=windows
, bjam --toolset=gcc-mingw --target-os=windows
и т. Д., Но, кажется, замечание работает ..
Для записи, mingw правильно установлен и работает. Вызов компилятора вручную приводит к правильным выходным файлам.
Есть идеи?
Кроме того, как мне заставить bjam создать версию для каждого набора инструментов, указанного в моем файле user-config.jam?
Бонусный вопрос:
В конце концов, мне нужно связать одну библиотеку надстроек и одну предварительно созданную библиотеку. Как мне указать разные библиотеки для разных целевых систем?
ОБНОВЛЕНИЕ Я скачал скрипт с http://mingw -cross-env.nongnu.org / , который позволил мне скомпилировать mingw, а также повысить библиотеки за один раз, поэтому об этой проблеме позаботились ... Я нашел способ заставить bjam вызывать компилятор mingw (я на другом компьютере, поэтому не могу найти решение в настоящее время). Другие вопросы до сих пор не решены.