Skip to content
New issue

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

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

Already on GitHub? # 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__, если верить этим ответам. Спасибо за идею, я попробую!

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

No branches or pull requests

2 participants