Puncte:0

Compilați proiectul combinat C și obiectivul C utilizând cmake

drapel fr

Proiectul meu conține codul sursă C și Objective-C și voi genera makefile folosind cmake. Practic, a fost construit în MacOS, dar acum va fi folosit în ubuntu.

Așa că am instalat pachetele necesare pentru Objective-C și tocmai am adăugat ambele fișiere *.m și *.c împreună în configurație, dar nu este compilat. Urmează mesajul de eroare.

În fișierul inclus din /usr/include/GNUstep/Foundation/NSObject.h:30,
                 din /usr/include/GNUstep/Foundation/FoundationErrors.h:29,
                 din /usr/include/GNUstep/Foundation/Foundation.h:33,
                 de pe /home/khan/Documents/work/tun2socks-iOS/base/BLog.m:32:
/usr/include/GNUstep/Foundation/NSObjCRuntime.h:230:16: avertisment: redeclarare redundantă a âNSSelectorFromStringâ [-Wredundant-decls]
  230 | GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
      | ^~~~~~~~~~~~~~~~~~~~
/usr/include/GNUstep/Foundation/NSObjCRuntime.h:228:16: notă: declarația anterioară a âNSSelectorFromStringâ a fost aici
  228 | GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
      | ^~~~~~~~~~~~~~~~~~~~
În fișierul inclus din /usr/include/GNUstep/Foundation/NSDebug.h:39,
                 din /usr/include/GNUstep/Foundation/Foundation.h:36,
                 de pe /home/khan/Documents/work/tun2socks-iOS/base/BLog.m:32:
/usr/include/GNUstep/GNUstepBase/NSDebug+GNUstepBase.h:45:16: avertisment: redeclarare redundantă a âGSDebugSetâ [-Wredundant-decls]
   45 | GS_EXPORT BOOL GSDebugSet(NSString *nivel);
      | ^~~~~~~~~~
În fișierul inclus din /usr/include/GNUstep/GNUstepBase/NSDebug+GNUstepBase.h:36,
                 din /usr/include/GNUstep/Foundation/NSDebug.h:39,
                 din /usr/include/GNUstep/Foundation/Foundation.h:36,
                 de pe /home/khan/Documents/work/tun2socks-iOS/base/BLog.m:32:
/usr/include/GNUstep/Foundation/NSProcessInfo.h:287:16: notă: declarația anterioară a âGSDebugSetâ a fost aici
  287 | GS_EXPORT BOOL GSDebugSet(NSString *nivel);
      | ^~~~~~~~~~
/home/khan/Documents/work/tun2socks-iOS/base/BLog.m: În funcția âstdout_logâ:
/home/khan/Documents/work/tun2socks-iOS/base/BLog.m:55:5: eroare: nu poate găsi declarația de interfață pentru â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] Eroare 1
make[1]: *** [CMakeFiles/Makefile2:283: base/CMakeFiles/base.dir/all] Eroare 2
make: *** [Makefile:130: all] Eroare 2

Și acesta este CMakeList.txt al subdirectorului meu.

set(BASE_ADDITIONAL_SOURCES)

dacă (HAVE_SYSLOG_H)
    listă(APPEND BASE_ADDITIONAL_SOURCES BLog_syslog.c)
endif ()

set(BASE_SOURCES
    DebugObject.c
    Blog.m
    BPending.c
    ${BASE_ADDITIONAL_SOURCES}
)
badvpn_add_library(bază "" "" "${BASE_SOURCES}")

Principala problemă aici este că proiectul conține atât fișiere Objective-C, cât și C. Știu când se folosește doar Objective-C, steag suplimentar gnustep-config --objc-flags trebuie specificat, dar nu sunt sigur cum pot gestiona acest lucru atunci când sunt amestecate coduri sursă în 2 limbi diferite.

Scuze pentru engleza mea proastă și mulțumesc anticipat pentru sfatul tău.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.