โครงการของฉันมีทั้งซอร์สโค้ด C และ Objective-C และฉันกำลังจะสร้าง makefile โดยใช้ 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 *ระดับ);
| ^~~~~~~~~~
ในไฟล์รวมจาก /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 *ระดับ);
| ^~~~~~~~~~
/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[ระดับ], blog_global.channels[channel].name, msg);
| ^~~~~
ทำ [2]: *** [base/CMakeFiles/base.dir/build.make:76: base/CMakeFiles/base.dir/BLog.m.o] ข้อผิดพลาด 1
ทำ [1]: *** [CMakeFiles/Makefile2:283: base/CMakeFiles/base.dir/all] ข้อผิดพลาด 2
ทำ: *** [Makefile:130: ทั้งหมด] ข้อผิดพลาด 2
และนี่คือ CMakeList.txt ของไดเรกทอรีย่อยของฉัน
ชุด (BASE_ADDITIONAL_SOURCES)
ถ้า (HAVE_SYSLOG_H)
รายการ (APPEND BASE_ADDITIONAL_SOURCES BLog_syslog.c)
เอนดิฟ ()
ชุด (BASE_SOURCES
DebugObject.c
BLog.m
BPending.c
${BASE_ADDITIONAL_SOURCES}
)
badvpn_add_library(ฐาน "" "" "${BASE_SOURCES}")
ปัญหาหลักที่นี่คือโครงการมีทั้งไฟล์ Objective-C และ C ฉันรู้ว่าเมื่อใดที่ใช้เฉพาะ Objective-C ซึ่งเป็นแฟล็กเพิ่มเติม gnustep-config --objc-ธง
ต้องระบุ แต่ไม่แน่ใจว่าฉันจะจัดการสิ่งนี้ได้อย่างไรเมื่อมีซอร์สโค้ด 2 ภาษาที่ต่างกันผสมกัน
ขออภัยสำหรับภาษาอังกฤษที่ไม่ดีของฉัน และขอขอบคุณล่วงหน้าสำหรับคำแนะนำของคุณ