FB makefile также как compiler/rtlib/gfxlib2 исходный код предлагает
некоторые параметры конфигурации. Если вы строите FB, используя
makefile FB, то имеет смысл использовать параметры
конфигурации в FB
makefile. Если вы строите FB
путем компиляции источников вручную (без использования FB makefile), тогда,
конечно, вы можете использовать только параметры конфигурации исходного
кода, и вы уже сами отвечаете за настройку FB.
Компилятор и исходный код rtlib/gfxlib2 обрабатывая некоторые #defines
позволяют проводить некоторую конфигурацию. Для примера, #defining ENABLE_STANDALONE
при построении компилятора (путем указания
-d ENABLE_STANDALONE в
командной строке fbc) настроит компилятор для
standalone(автономной)
установки. В качестве другого примера, #defining DISABLE_FFI при
построении rtlib (путем указания
-DDISABLE_FFI в командной строке gcc)
приведет к тому, что rtlib будет построен без использования заголовков
libffi (
ffi.h). Это отключает поддержку
Threadcall
в rtlib, но может быть полезным, если вы не имеете libffi.
При использовании файла makefile FB, вы можете установить некоторые
переменные в командной строке make или внутри
config.mk , которые
затрагивают как makefile будет вызывать fbc/gcc компиляторы и какие каталоги
будут использоваться для установки FB. Это включает в себя случаи, когда
makefile автоматически передают параметры конфигурации на исходный код compiler/rtlib/gfxlib2.
Например, если задать ENABLE_STANDALONE=1 в
makefile
FB , то это заставляет его использовать
-d ENABLE_STANDALONE при
компиляции нового компилятора (, чтобы сделать его автономным) и положить
недавно построенный компилятор и библиотеки в автономное расположение
каталогов.
FB makefile команды
По умолчанию - строит все,
что нужно построить
Используется только для
построения конкретного компонента. Например, это может
использоваться для построения rtlib для конкретной
цели, для того, чтобы иметь возможность кросс-компиляции
программ FB (например, compiler) для этой цели.
Используется для удаления
построенных файлов. make clean удаляет все
построенные файлы, в то время как, например, make clean-compiler
удаляет только файлы, созданные для компилятора, позволяя
компилятору перекомпилировать быстрее, без необходимости
восстанавливать весь код rtlib/gfxlib2.
- install[-component], uninstall[-component]
Используется для копирования
построенных файлов в каталоге, указанном в переменной prefix,
или удаления их оттуда. Это особенно полезно при установке
обычной сборки в /usr/local на системах Linux/BSD.
Для автономного сборки, make install также будет
работать и скопирует или удалит файлы. Тем не менее,
автономная сборка использует несовместимое расположение
каталогов и не следует устанавливать в /usr/local
или аналогичные каталоги из-за этого.
Обратите внимание, что довольно неплохо запускать недавно
построенную установку FB прямо из каталога, в котором он был
составлен; make install не нуждается в prefix
(если путь prefix был жестко задан в компилятор
через ENABLE_PREFIX).
Кроме того есть команды install-includes и uninstall-includes,
которые копируют/удаляют только FB включаемые
файлы(заголовочные файлы). Обратите внимание, что нет
никаких make includes или подобных команд, чтобы
включаемые файлы не могли быть построены.
FB makefile конфигурация
Следующие переменные предназначены для установки
make в
командной строке или в файле
config.mk рядом с FB makefile, который
читается в FB makefile.
config.mk полезно для настройки переменных
в виде констант, таким образом вам не придется указывать их вручную каждый
раз при вызове make.
Пример
Make в командной строке:
$ make CFLAGS='-O2 -g'
config.mk пример:
CFLAGS = -O2 -g
- FBFLAGS, FBCFLAGS, FBLFLAGS
Дополнительные флаги
fbc для использования при
компиляции и/или линковки компилятора. Значение по умолчанию -maxerr 1 (проверьте FB makefile
для получения более подробной информации). Обычно это
используется для добавления параметров, таких как -g -exx
для создания отладочной версии компилятора.
Дополнительные флаги
gcc для использования при
компиляции rtlib и gfxlib2. Значение по умолчанию -O2
(проверьте FB makefile для получения более подробной
информации). Обычно это переопределяется для отладочных
целей, делая CFLAGS=-g.
Путь установки FB. По
умолчанию /usr/local. Примечание: MSYS карты /usr/local
в C:\msys\1.0\local.
Это используется только...
- для команд makefile install и uninstall,
- в компиляторе (жестко), если ENABLE_PREFIX был использован
Обратите внимание,
что в сочетании с bash на
платформе Win32 (например, из DJGPP или MSYS) необходимо
использовать прямую косую черту вместо обратной косой черты
в пути к каталогам, например: prefix=C:/MinGW
Его переменная может быть
установлена в наборе инструментов
GCC,
таких как триплет
i686-pc-linux-gnu or
x86_64-w64-mingw32
для кросс-компиляции с помощью этого набора инструментов GCC
кросс-компилятора. makefile будет использовать
fbc -target $(TARGET)
вместо
fbc, а
$(TARGET)-gcc
вместо
gcc.
Например, на системе Debian GNU/Linux с установленным
i686-w64-mingw32 GCC
кросс-компилятором, вы можете построить win32 rtlib примерно
так:
# Build the win32 rtlib/gfxlib2
make rtlib gfxlib2 TARGET=i686-w64-mingw32
# Install it into /usr/local/lib/i686-w64-mingw32-freebasic
make install-rtlib install-gfxlib2 TARGET=i686-w64-mingw32
Это будет дополнять существующую установку FBC в
/usr/local, как плагин и теперь вы можете выполнить кросс-компиляцию программы FB для win32:
fbc -target i686-w64-mingw32 ...
Эти переменные указывают
программам fbc, gcc и ar использоваться во время построения.
Можно указать их для переопределения по умолчанию, например:
- make FBC=~/FreeBASIC-0.90.1-linux/fbc CC="gcc -m32"
FBC влияет
только на исходный код compiler, а CC и AR
используются для rtlib и gfxlib2.
V для подробностей.
По умолчанию, makefile не
отображает в полной мере информацию, используемые во время
компиляции, в командной строке, а просто печатает последний
инструмент и комбинацию имени файла, чтобы дать лучшую
визуальную индикацию прогресса сборки. Он также делает
предупреждения и ошибки. Если переменная V
установлена, то будет показана полностью информация в
командной строке, как обычный make GNU.
Автономная сборка FB вместо
обычной сборки Unix стиля, смотрите также:
автономная vs. обычная
сборка, сравнения. Это заставляет makefile использовать
автономное расположение каталогов и использовать
-d ENABLE_STANDALONE
при построении компилятора.
Это заставляет makefile
использовать -d ENABLE_PREFIX=$(prefix) при
построении компилятора.
Это заставляет makefile
использовать -d ENABLE_SUFFIX=$(ENABLE_SUFFIX) при
построении компилятора, и добавлять строку данного суффикса
к исполняемому fbc и именам
каталогов lib/ .
Например использование ENABLE_PREFIX=-0.24 даст вам bin/fbc-0.24.exe
и каталог lib/freebasic-0.24/ , вместо по умолчанию bin/fbc.exe
и lib/freebasic/. Это позволяет устанавливать
несколько версий компилятора и сред выполнения параллельно.
Примечание: имя каталога include/freebasic/
не затрагивается, и FB заголовки всегда являются общими для
всех установленных версий FB.
Это поддерживается только для построения нормальной (не
автономной) сборки. Это не требуется для построения
автономной сборки, потому что каждая из них может быть в
отдельном каталоге , хотя обычная (не автономная) сборка
может совместно использовать общий каталог установки такой
как /usr/local или C:\MinGW.
Конфигурации исходного кода компилятора (FBFLAGS)
Это заставляет компилятор
вести себя как автономный инструмент, который не может
полагаться на системные определенные программы или
библиотеки. См.
автономная vs. обычная сборка, сравнения для получения
дополнительной информации.
Это заставляет компилятор
добавить суффикс к имени каталога lib/freebasic/
при поиске собственного каталога lib/freebasic/.
Для примера, -d ENABLE_SUFFIX=-0.24 заставляет его
искать lib/freebasic-0.24/ вместо lib/freebasic/.
Соответствующая опция ENABLE_SUFFIX=foo makefile, настроит
компилятор на работу в новом каталоге.
- -d ENABLE_PREFIX=/some/path
Это вызывает заданный префикс
пути быть жестко закодированным в компилятор, отключая
использование
Exepath().
Таким образом он больше не будет перемещаемый. Это полезно,
если известно, что компилятор не нужно перемещать, или если
exepath()
не работает должным образом (Например, в FB 0.90.1, это
относится к FreeBSD).
Конфигурации исходного кода rtlib и gfxlib2 (CFLAGS)
С этим, Unix rtlib/gfxlib2 не
будет использовать X11 заголовки, отключая графический
драйвер gfxlib2 X11 и некоторые функциональности из rtlib
Linux консоли (влияет на multikey() и обработку событий мыши
в консоли).
С этим, Linux rtlib не будет
использовать General Purpose Mouse headers (gpm.h), отключая
функциональность Linux
GetMouse.
С этим, rtlib не будет
использовать заголовки libffi (ffi.h), отключая
функциональность
Threadcall.
С этим, gfxlib2 не будет
использовать OpenGL заголовки, отключая драйвера OpenGL
графики.