Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Эксперт WindowsАвтор FAQ
17564 / 7408 / 881
Регистрация: 25.12.2011
Сообщений: 11,197
Записей в блоге: 16
1

Как скомпилировать PCRE?

19.05.2017, 10:11. Просмотров 1020. Ответов 9
Метки нет (Все метки)

Здравствуйте!

Хочу скомпилировать PCRE v1 (8.40).

Где найти нужную версию компилятора?

Я скачал консольную free версию отсюда,
переименовал bcc32c.exe в bcc32.exe, поставил TASM, настроил %PATH%, поменял пути к инклудам и либам:
Windows Batch file
1
2
3
4
5
6
7
REM CHANGE THIS FOR YOUR BORLAND C++ COMPILER PATH
::SET BORLAND=f:\bcc
REM location of the TASM binaries, if compiling with the -B BCC switch
::SET TASM=f:\tasm
 
...
bcc32 -DDFTABLES %COMPILE_DEFAULTS% -L%BORLAND%\lib\win32c\release -I%BORLAND%\include\windows\crtl dftables.c
Но запустив батник makevp.bat, получаю в строке:
Windows Batch file
1
bcc32 -a4 -c -RT- -y- -v- -u- -R- -Q- -X -d -fp -ff -P- -O2 -Oc -Ov -3 -w-8004 -w-8064 -w-8065 -w-8012 -UDFTABLES -DVPCOMPAT %COMPILE_DEFAULTS% @makevp_c.txt
такие ошибки:

C:\Users\Alex\Desktop\pcre-8.40\pcre-8.40>bcc32 -a4 -c -RT- -y- -v- -u- -R- -Q- -X -d -fp -ff -P- -O2 -Oc -Ov -3 -w-8004
-w-8064 -w-8065 -w-8012 -UDFTABLES -DVPCOMPAT -DHAVE_CONFIG_H -DPCRE_STATIC -IC:\BCC101\include @makevp_c.txt
Embarcadero C++ 7.20 for Win32 Copyright (c) 2012-2016 Embarcadero Technologies, Inc.
Warning: option '-y-' is not supported in Clang-based compiler.
Warning: option '-u-' is not supported in Clang-based compiler.
Warning: option '-R-' is not supported in Clang-based compiler.
Warning: option '-Q-' is not supported in Clang-based compiler.
Warning: option '-fp' is not supported in Clang-based compiler.
Warning: option '-ff' is not supported in Clang-based compiler.
Warning: option '-Oc' is not supported in Clang-based compiler.
Warning: option '-Ov' is not supported in Clang-based compiler.
Warning: option '-3' is not supported in Clang-based compiler.
Warning: option '-w-8004' is not supported in Clang-based compiler.
Warning: option '-w-8064' is not supported in Clang-based compiler.
Warning: option '-w-8065' is not supported in Clang-based compiler.
Warning: option '-w-8012' is not supported in Clang-based compiler.
bcc32.exe: error: no such file or directory: 'C:/BCC101/binmakevp_c.txt'
bcc32.exe: error: no input files
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2017, 10:11
Ответы с готовыми решениями:

Как установить PCRE?
Помогите, пожалуйста, никак не получается её поставить. Неужели никто её не использует? ...

Не знаю как настроить расширение PCRE для работы с регулярными выражениям
Добрый день или доброй ночи! Я с темы веб программирования, так что не плохо знаю только язык php и...

PCRE. Нужна регулярка
Всем привет! Здесь есть знатоки регулярок? У меня проблема, 5-й день мозг насилую )) Вобщем задача...

Ссылки назад в PCRE
Всем привет, подскажите пожалуйста, как в PHP стандартом PCRE через ссылку назад поменять текст? ...

9
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
19.05.2017, 13:34 2
Dragokas, похоже на то, что вы пытаетесь либу под борланд скомпилить clang, а флаги компилятора и пути не совпадают. Эти компиляторы во многом отличаются друг от друга.
0
Эксперт WindowsАвтор FAQ
17564 / 7408 / 881
Регистрация: 25.12.2011
Сообщений: 11,197
Записей в блоге: 16
21.05.2017, 13:40  [ТС] 3
Ок, тогда ткните, пожалуйста, носом на правильное название компилятора, для которого был составлен этот батник, и ссылку на него.
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
22.05.2017, 17:22 4
Dragokas, C++ Builder, но он платный(
1
13688 / 7316 / 1746
Регистрация: 30.01.2014
Сообщений: 12,257
24.05.2017, 19:22 5
Цитата Сообщение от Dragokas Посмотреть сообщение
батник makevp.bat
А зачем нужно связываться с билдером, когда там в составе исходников есть cmake, с помощью которого можно собрать проект для любого вменяемого инструментария, будь то mingw, clang или visual studio?
0
Эксперт WindowsАвтор FAQ
17564 / 7408 / 881
Регистрация: 25.12.2011
Сообщений: 11,197
Записей в блоге: 16
24.05.2017, 20:52  [ТС] 6
Окей, я скомпилировал PCRE через makevp.bat (использовал C++ Builder v6), получив новые файлы:

config.h
dftables.exe
pcre.h
pcre_chartables.c
pcre77.lib
Что нужно поменять в батнике, чтобы получить динамическую библиотеку?

Батник:
Кликните здесь для просмотра всего текста
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
:: AH 20-12-06 modified for new PCRE-7.0 and VP/BCC
:: PH 19-03-07 renamed !compile.txt and !linklib.txt as makevp-compile.txt and
::             makevp-linklib.txt
:: PH 26-03-07 re-renamed !compile.txt and !linklib.txt as makevp-c.txt and
::             makevp-l.txt
:: PH 29-03-07 hopefully the final rename to makevp_c and makevp_l
:: AH 27.08.08 updated for new PCRE-7.7
::             required PCRE.H and CONFIG.H will be generated if not existing
 
@echo off
echo.
echo Compiling PCRE with BORLAND C++ for VIRTUAL PASCAL
echo.
 
REM This file was contributed by Alexander Tokarev for building PCRE for use
REM with Virtual Pascal. It has not been tested with the latest PCRE release.
 
REM This file has been modified and extended to compile with newer PCRE releases
REM by Stefan Weber (Angels Holocaust).
 
REM CHANGE THIS FOR YOUR BORLAND C++ COMPILER PATH
SET BORLAND=h:\Borland\CBuilder6
REM location of the TASM binaries, if compiling with the -B BCC switch
SET TASM=c:\tasm
 
SET PATH=%PATH%;%BORLAND%\bin;%TASM%\bin
SET PCRE_VER=77
SET COMPILE_DEFAULTS=-DHAVE_CONFIG_H -DPCRE_STATIC -I%BORLAND%\include
 
del pcre%PCRE_VER%.lib >nul 2>nul
 
:: sh configure
 
:: check for needed header files
if not exist pcre.h copy pcre.h.generic pcre.h
if not exist config.h copy config.h.generic config.h
 
bcc32 -DDFTABLES %COMPILE_DEFAULTS% -L%BORLAND%\lib dftables.c
IF ERRORLEVEL 1 GOTO ERROR
 
:: dftables > chartables.c
dftables pcre_chartables.c
 
REM compile and link the PCRE library into lib: option -B for ASM compile works too
bcc32 -a4 -c -RT- -y- -v- -u- -R- -Q- -X -d -fp -ff -P- -O2 -Oc -Ov -3 -w-8004 -w-8064 -w-8065 -w-8012 -UDFTABLES -DVPCOMPAT %COMPILE_DEFAULTS% @makevp_c.txt
IF ERRORLEVEL 1 GOTO ERROR
 
tlib %BORLAND%\lib\cw32.lib *calloc *del *strncmp *memcpy *memmove *memset *memcmp *strlen
IF ERRORLEVEL 1 GOTO ERROR
tlib pcre%PCRE_VER%.lib @makevp_l.txt +calloc.obj +del.obj +strncmp.obj +memcpy.obj +memmove.obj +memset.obj +memcmp.obj +strlen.obj
IF ERRORLEVEL 1 GOTO ERROR
 
del *.obj *.tds *.bak >nul 2>nul
 
echo ---
echo Now the library should be complete. Please check all messages above.
echo Don't care for warnings, it's OK.
goto END
 
:ERROR
echo ---
echo Error while compiling PCRE. Aborting...
pause
goto END
 
:END


Знаю, что нужно как-то добавить ключик -WD, но как правильно записать всё не знаю.

Добавлено через 2 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
А зачем нужно связываться с билдером, когда там в составе исходников есть cmake, с помощью которого можно собрать проект для любого вменяемого инструментария, будь то mingw, clang или visual studio?
Потому что я никогда не работал с cmake.
Что нужно написать в консоль Visual Studio для старта компиляции?

Добавлено через 9 минут
Ага, почитал. Там не нужна консоль. Ок, почитаю мануалы, попробую разобраться.

Добавлено через 6 минут
Ну, вообщем с каждым компилятором свои неувязочки.
CMake из VS 2017 показывает такую ошибку:
Ошибка CMake Error at H:\Sources\PRCE\pcre-8.40\CMakeLists.txt:194 (OPTION):
option called with incorrect number of arguments: PCRE_STATIC_RUNTIME OFF
CACHE BOOL ON=Compile against the static runtime (/MT). OFF H:\Sources\PRCE\pcre-8.40\CMakeLists.txt 194
на второй строке:
C++
1
2
3
4
5
6
7
8
IF(MSVC)
  OPTION(PCRE_STATIC_RUNTIME OFF CACHE BOOL
    "ON=Compile against the static runtime (/MT)."
    OFF)
  OPTION(INSTALL_MSVC_PDB
         "ON=Install .pdb files built by MSVC, if generated"
         OFF)
ENDIF(MSVC)
0
13688 / 7316 / 1746
Регистрация: 30.01.2014
Сообщений: 12,257
24.05.2017, 21:14 7
Цитата Сообщение от Dragokas Посмотреть сообщение
Ну, вообщем с каждым компилятором свои неувязочки.
Есть такое дело, в версии 8.40 баг в конфигурации cmake (8.38 все нормально было),
вот здесь решение: https://bugs.exim.org/show_bug.cgi?id=1868
1
Эксперт WindowsАвтор FAQ
17564 / 7408 / 881
Регистрация: 25.12.2011
Сообщений: 11,197
Записей в блоге: 16
24.05.2017, 22:10  [ТС] 8
Спасибо. Вообщем заменил на:
C
1
2
3
4
5
6
7
8
IF(MSVC)
  OPTION(PCRE_STATIC_RUNTIME
    "ON=Compile against the static runtime (/MT)."
    OFF)
  OPTION(INSTALL_MSVC_PDB
         "ON=Install .pdb files built by MSVC, if generated"
         OFF)
ENDIF(MSVC)
и получил ещё 100+ ошибок , в т.ч. почему-то на инклуды стандартных библиотек.
Вообщем, не судьба мне с моими знаниями собрать v1. (или Borland придётся добивать)
Буду собирать PCRE v2. На буржуйском форуме её только что собрали с CMake без костылей.
Просто v2 получается ~ в 7 раз больше по объему dll-ки. Не кошерно )

Добавлено через 1 минуту
Вообщем, если подскажете, как составить ком. строку для bcc32.exe, чтоб собрать dll, буду признателен.
0
13688 / 7316 / 1746
Регистрация: 30.01.2014
Сообщений: 12,257
24.05.2017, 22:28 9
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

Цитата Сообщение от Dragokas Посмотреть сообщение
и получил ещё 100+ ошибок
Очень странно. Только что успешно собрал 8.40 с этим патчем (по ссылке выше)
Код
IF(MSVC)
  OPTION(PCRE2_STATIC_RUNTIME
	"ON=Compile against the static runtime (/MT)."
	OFF)
  OPTION(INSTALL_MSVC_PDB
         "ON=Install .pdb files built by MSVC, if generated"
         OFF)
ENDIF(MSVC)
Использовал cmake-gui, cmake 3.6.1 и VS 2013. Никаких настроек дополнительно не делал, открыл PCRE.sln.
Естественно каталог сборки должен быть отличным от каталога с исходниками.
0
Эксперт WindowsАвтор FAQ
17564 / 7408 / 881
Регистрация: 25.12.2011
Сообщений: 11,197
Записей в блоге: 16
26.05.2017, 01:30  [ТС] 10
Спасибо, всё получилось. Не пользовался раньше CMake-gui.

Я использовал иной способ. Посмотрел, как в одной из презентаций демонстрировали CMake for MSVS 2017. Там проект открывали так: прямо из студии Файл => Открыть => Папку. Вот таким способом и насыпало кучу ошибок, хотя с виду всё подтянуло хорошо, конфиг прочитало и т.п.

Добавлено через 2 минуты
ЗЫ. Решил распространять бинарник на GitHub-е, вместе с инструкцией по компиляции для таких как я (TODO).
https://github.com/dragokas/PCRE
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2017, 01:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вопрос по регулярным выражениям PCRE
<\w+ *> - любой тег Зачем мы в этой конструкции ставим * ?

PCRE: 5 и более слов в строке
Скажите пожалуйста. Есть файл со строками текста (windows-1251) Есть выражение. ...

Настройка библиотек pcre-6.4-1-lib
скачал pcre-6.4-1-lib что делать дальше? Куда копировать файлы из етой библиотеки? Как настроить?

Компиляция PCRE 8.01 под Windows
Доброго времени суток. Понадобилось использовать в программе регулярные выражения. Погуглил,...

Не могу установить библиотеку PCRE
На скринах установленные библиотеки и ошибка. Компилю код из вики...

В чем разница библиотек pcre и regex?
библиотеки pcre и regex... В чем разница? Какая работает быстрее? Скажите Ваше мнение!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.