Мой проект содержит исходный код как на C, так и на Objective-C, и я собираюсь сгенерировать make-файл с помощью cmake.
В основном он был построен в MacOS, но теперь он будет использоваться в Ubuntu.
Итак, я установил необходимые пакеты для Objective-C и просто добавил файлы *.m и *.c вместе в конфиг, но он не компилируется.
Ниже приведено сообщение об ошибке.
В файле, включенном из /usr/include/GNUstep/Foundation/NSObject.h:30,
из /usr/include/GNUstep/Foundation/FoundationErrors.h:29,
из /usr/include/GNUstep/Foundation/Foundation.h:33,
из /home/khan/Documents/work/tun2socks-iOS/base/BLog.m:32:
/usr/include/GNUstep/Foundation/NSObjCRuntime.h:230:16: предупреждение: избыточное повторное объявление «NSSelectorFromString» [-Wredundant-decls]
230 | GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
| ^~~~~~~~~~~~~~~~~~~~~
/usr/include/GNUstep/Foundation/NSObjCRuntime.h:228:16: примечание: предыдущее объявление «NSSelectorFromString» было здесь
228 | GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
| ^~~~~~~~~~~~~~~~~~~~~
В файле, включенном из /usr/include/GNUstep/Foundation/NSDebug.h:39,
из /usr/include/GNUstep/Foundation/Foundation.h:36,
из /home/khan/Documents/work/tun2socks-iOS/base/BLog.m:32:
/usr/include/GNUstep/GNUstepBase/NSDebug+GNUstepBase.h:45:16: предупреждение: избыточное повторное объявление «GSDebugSet» [-Wredundant-decls]
45 | GS_EXPORT BOOL GSDebugSet(NSString *level);
| ^~~~~~~~~~
В файле, включенном из /usr/include/GNUstep/GNUstepBase/NSDebug+GNUstepBase.h:36,
из /usr/include/GNUstep/Foundation/NSDebug.h:39,
из /usr/include/GNUstep/Foundation/Foundation.h:36,
из /home/khan/Documents/work/tun2socks-iOS/base/BLog.m:32:
/usr/include/GNUstep/Foundation/NSProcessInfo.h:287:16: примечание: предыдущее объявление «GSDebugSet» было здесь
287 | GS_EXPORT BOOL GSDebugSet(NSString *level);
| ^~~~~~~~~~
/home/khan/Documents/work/tun2socks-iOS/base/BLog.m: В функции «stdout_log»:
/home/khan/Documents/work/tun2socks-iOS/base/BLog.m:55:5: ошибка: не удается найти объявление интерфейса для «NXConstantString»
55 | NSLog(@"%s(%s): %s\n", level_names[level], blog_global.channels[channel].name, msg);
| ^~~~~
make[2]: *** [base/CMakeFiles/base.dir/build.make:76: base/CMakeFiles/base.dir/BLog.m.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:283: base/CMakeFiles/base.dir/all] Ошибка 2
make: *** [Makefile:130: all] Ошибка 2
А это CMakeList.txt моего подкаталога.
установить (BASE_ADDITIONAL_SOURCES)
если (HAVE_SYSLOG_H)
список(ПРИЛОЖЕНИЕEND BASE_ADDITIONAL_SOURCES BLog_syslog.c)
конец ()
установить (BASE_SOURCES
DebugObject.c
Блог.м
BPending.c
${BASE_ADDITIONAL_SOURCES}
)
badvpn_add_library(база "" "" "${BASE_SOURCES}")
Основная проблема здесь в том, что проект содержит файлы Objective-C и C. Я знаю, когда используется только Objective-C, дополнительный флаг gnustep-config --objc-флаги
должен быть указан, но не уверен, как я могу справиться с этим, когда смешиваются исходные коды на двух разных языках.
Извините за мой плохой английский, и заранее спасибо за ваш совет.