Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка сборки ветки experimental в MacOS #138

Open
and-semakin opened this issue May 2, 2020 · 6 comments
Open

Ошибка сборки ветки experimental в MacOS #138

and-semakin opened this issue May 2, 2020 · 6 comments

Comments

@and-semakin
Copy link

Не могу собрать ветку experimental на MacOS. Сборка завершается с 1 ошибкой и 140 предупреждениями.

Ошибка имеет следующее содержание:

$ make
cd thirdParty/mimetex/ && ( test -e Makefile || /usr/local/opt/qt/bin/qmake -o Makefile /Users/andreisemakin/git/mytetra_dev/thirdParty/mimetex/mimetex.pro ) && /Library/Developer/CommandLineTools/usr/bin/make -f Makefile
Project MESSAGE: Touch mimeTeX qmake
/Library/Developer/CommandLineTools/usr/bin/clang -c -pipe -DAA -O2  -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=10.13 -Wall -Wextra -fPIC -DQT_NO_DEBUG -DQT_CORE_LIB -I. -I/usr/local/Cellar/qt/5.14.1/lib/QtCore.framework/Headers -I. -I/usr/local/Cellar/qt/5.14.1/mkspecs/macx-clang -F/usr/local/Cellar/qt/5.14.1/lib -o build/obj/mimetex.o mimetex.c
In file included from mimetex.c:434:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/string.h:160:7: error: conflicting types for
      'strcasestr'
char    *strcasestr(const char *__big, const char *__little);
         ^
mimetex.c:428:13: note: previous declaration is here
const char *strcasestr(const char *s1, const char *s2);

Полный вывод сборки можно посмотреть здесь:
https://github.com/and-semakin/mytetra_dev/runs/638247030

Есть ли идеи, как это можно починить?

@and-semakin
Copy link
Author

and-semakin commented May 2, 2020

При этом ветка master собирается без ошибок, очевидно, потому что там нет mimeTeX.

@and-semakin
Copy link
Author

А если откатить коммит 3ca1e1d, то сборка начинает работать 🤔

@xintrea
Copy link
Owner

xintrea commented May 5, 2020

Хм, ломающий коммит от 15 сентября 2018. Он фиксит сборку под Windows. Вроде бы после этого времени кто-то собирал под MacOS...

Судя по тексту ошибки, в макосовом заголовке:

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/string.h

... есть функция strcasestr(), и ее прототип написан без const.

В файле mimetex.c объявлена своя функция strcasestr, и ее прототип сделан с const.

Возможно, что прототип strcasestr() и реализацию этой функции в файле mimetex.c надо обернуть в директивы условной компиляции ( #ifndef ... ), в качестве параметра указать дефайн для MacOS, который создает макосовый компилер во время компиляции, я не знаю как этот дефайн в макоси называется.

Но после внесения изменений, надо проверить компиляцию на Windows и Linux, хотя бы под GCC. Потом делать коммит.

@xintrea
Copy link
Owner

xintrea commented May 5, 2020

Ну, то есть, чтобы под MacOs использовалась родная функция, а этой самодельной небыло.

@and-semakin
Copy link
Author

Почти уверен, что под MacOS после этого коммита собирали только ветку master (я так и делал), поэтому ошибка и была замечена только сейчас.

@and-semakin
Copy link
Author

Кажется, такой макрос для MacOS называется __APPLE__, если верить этим ответам. Спасибо за идею, я попробую!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants