Есть некоторое опенсорсное приложение, которое нужно собрать под маком. При компиляции оно падает с ошибкой. Хотя раньше этот код у других достоверно собирался. Возможно на другой версии макоси. Я собираю под 10.8
Building CXX object CMakeFiles/bluecherry-client.dir/src/ui/StatusBandwidthWidget_mac.mm.o
In file included from /Users/user/bluecherry/bluecherry-client-scripts/package/bluecherry-client-2.1.4/src/ui/StatusBandwidthWidget_mac.mm:18:
/Users/user/bluecherry/bluecherry-client-scripts/package/bluecherry-client-2.1.4/src/ui/StatusBandwidthWidget.h:44:7: error:
redefinition of 'NSPopUpButton' as different kind of symbol
class NSPopUpButton;
^
/System/Library/Frameworks/AppKit.framework/Headers/NSPopUpButton.h:14:12: note: previous definition is here
@interface NSPopUpButton : NSButton {
^
1 error generated.
make[2]: *** [CMakeFiles/bluecherry-client.dir/src/ui/StatusBandwidthWidget_mac.mm.o] Error 1
Сам код можно посмотреть здесь
https://github.com/vogel/bluecherry-client/blob/master/src/ui/StatusBandwidth...
https://github.com/vogel/bluecherry-client/blob/master/src/ui/StatusBandwidth...
Насколько я понял, суть в том, что компилятору не нравится, что маковский виджет NSButton объявляется как «class NSPopUpButton;» в заголовочном файле. Этот файл инклюдится как в C++ файлы, так и в ObjectiveC, так что он должен быть корректным с точки зрения С++ тоже. Как это можно побороть? obj-c не знаю, особенности макопрограммирования тоже не особо, линукс тут при том, что разработка ведётся под ним