Objective-C สำหรับ Windows


230

อะไรจะเป็นวิธีที่ดีที่สุดในการเขียน Objective-C บนแพลตฟอร์ม Windows

Cygwin และ gcc? มีวิธีใดบ้างที่ฉันสามารถรวมเข้ากับ Visual Studio ได้

ในบรรทัดเหล่านั้น - มีคำแนะนำใด ๆ เกี่ยวกับวิธีการเชื่อมโยงและใช้ Windows SDK สำหรับสิ่งนี้ มันเป็นสัตว์ร้ายที่แตกต่างออกไป แต่ฉันรู้ว่าฉันสามารถเขียนชุดประกอบและลิงก์ใน Windows DLLs ได้ซึ่งทำให้ฉันสามารถเข้าถึงการโทรเหล่านั้นได้ แต่ฉันไม่รู้วิธีการทำเช่นนี้โดยไม่ต้องไปที่ Google

มีใครทราบถึงแหล่งข้อมูลออนไลน์หรือหนังสือที่ดีที่จะทำหรืออธิบายสิ่งต่าง ๆ เหล่านี้?


5
หากคุณเพียงแค่กำลังทำมันสำหรับ iOS คุณสามารถใช้iOS สิ่งแวดล้อมสรรค์สร้างโดยส่วนตัว Baty ...
โคลจอห์นสัน

คำตอบ:


146

ขยายคำตอบก่อนหน้านี้สองคำตอบหากคุณต้องการ Objective-C แต่ไม่ใช่กรอบ Cocoa ใด ๆ gcc จะทำงานบนแพลตฟอร์มใดก็ได้ คุณสามารถใช้มันผ่าน Cygwin หรือรับ MinGW อย่างไรก็ตามหากคุณต้องการกรอบการทำงานของโกโก้หรืออย่างน้อยก็เป็นเซตย่อยที่สมเหตุสมผล GNUStep และ Cocotron เป็นทางออกที่ดีที่สุดของคุณ

Cocotron ใช้สิ่งต่าง ๆ มากมายที่ GNUStep ไม่เช่น CoreGraphics และ CoreData แม้ว่าฉันจะไม่สามารถรับรองได้ว่าการใช้งานของพวกเขาจะเสร็จสมบูรณ์ในกรอบที่เฉพาะเจาะจง เป้าหมายของพวกเขาคือการทำให้ Cocotron เป็นเวอร์ชั่นล่าสุดของ OS X เพื่อให้โปรแกรม OS X ที่ทำงานได้ใด ๆ สามารถทำงานบน Windows ได้ เนื่องจากโดยปกติแล้ว GNUStep จะใช้ gcc รุ่นล่าสุดจึงเพิ่มการรองรับ Objective-C ++ และคุณลักษณะ Objective-C 2.0 จำนวนมาก

ฉันยังไม่ได้ทดสอบคุณสมบัติเหล่านั้นด้วย GNUStep แต่ถ้าคุณใช้ gcc รุ่นใหม่อย่างเพียงพอคุณอาจใช้งานได้ ฉันไม่สามารถใช้ Objective-C ++ กับ GNUS ได้ในไม่กี่ปีที่ผ่านมา อย่างไรก็ตาม GNUStep รวบรวมจากทุกแพลตฟอร์ม Cocotron เป็นโครงการที่ใช้คอมพิวเตอร์เป็นศูนย์กลาง แม้ว่ามันอาจจะเป็นไปได้ที่จะรวบรวมมันบนแพลตฟอร์มอื่น ๆ มันมาพร้อมไฟล์โครงการ XCode ไม่ใช่ไฟล์ดังนั้นคุณจึงสามารถรวบรวมเฟรมเวิร์กในกรอบบน OS X ได้เท่านั้นนอกจากนี้ยังมีคำแนะนำในการรวบรวมแอพ Windows บน XCode ด้วย แพลตฟอร์มอื่น ๆ โดยทั่วไปอาจเป็นไปได้ที่จะตั้งค่าสภาพแวดล้อมการพัฒนา Windows สำหรับ Cocotron แต่มันไม่ง่ายเท่ากับการตั้งค่าหนึ่งสำหรับ GNUStep และคุณจะต้องอยู่ด้วยตัวเองดังนั้น GNUStep จึงเป็นวิธีที่ดีที่สุดถ้าคุณกำลังพัฒนา Windows เมื่อเทียบกับเฉพาะสำหรับ Windows

สำหรับสิ่งที่คุ้มค่า Cocotron ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT และ GNUStep ได้รับใบอนุญาตภายใต้ LGPL


1
คุณสามารถย้ายโกโก้ framworks ที่เป็นโอเพ่นซอร์ส ตัวอย่างเช่น CoreFoundation
โคลจอห์นสัน

Core Foundation ทั้งหมดไม่ใช่โอเพ่นซอร์ส แหล่งใหญ่ปิดแหล่ง
uchuugaka

X'D ฉันไม่รู้ว่าทำไมผู้ชายคนนี้ถึงได้รับคำตอบที่ดีที่สุดที่เขาไม่เคยลองแม้แต่สิ่งที่เขาพูดถึง พวกเขาควรทำป้ายใหม่สำหรับคำตอบ bs ไม่มีความผิด @ ไมเคิล มันเป็นการอ่านที่น่าสนใจ
Wolfpack'08

ไม่มีการกระทำผิดกฎหมาย แต่สำหรับบันทึกในเวลาที่ฉันเขียนคำตอบนี้ฉันได้พยายามดิ้นรนเพื่อรวบรวม Objective-C สำหรับ Windows สองสามสัปดาห์และได้ลองทั้ง GNUStep และ Cocoatron ในที่สุดฉันก็ถูกบังคับให้เขียนโครงการใน C ++ อีกครั้งเนื่องจากข้อผิดพลาดของคอมไพเลอร์ในเวลานั้นและ ivars ไม่เริ่มต้นเป็น 0 บน Windows ฉันอ้างอิงถึง "ฉันยังไม่ได้ทดสอบคุณสมบัติเหล่านั้น" แต่ฉันกำลังพูดถึงคุณสมบัติใหม่ของ Objective-C 2.0 ซึ่งเพิ่งวางจำหน่ายบนแพลตฟอร์ม Apple ในเวลาน้อยกว่าหนึ่งปีเมื่อเขียนคำตอบนี้และ เพิ่งลงจอดใน GNUStep
Michael Buckley

89

คุณสามารถใช้ Objective C ในสภาพแวดล้อม Windows หากคุณทำตามขั้นตอนเหล่านี้มันควรจะทำงานได้ดี:

  1. เยี่ยมชมเว็บไซต์ GNUstepและดาวน์โหลดGNUstep MSYS Subsystem(MSYS สำหรับ GNUstep), GNUstep Core(ไลบรารีสำหรับ GNUstep) และGNUstep Devel
  2. หลังจากดาวน์โหลดไฟล์เหล่านี้ให้ติดตั้งตามลำดับหรือคุณจะมีปัญหากับการกำหนดค่า
  3. นำทางไปยังC:\GNUstep\GNUstep\System\Library\Headers\Foundation1และตรวจสอบให้แน่ใจว่าFoundation.hมีอยู่
  4. เปิดพรอมต์คำสั่งและเรียกใช้gcc -vเพื่อตรวจสอบว่าGNUstep MSYSมีการติดตั้งอย่างถูกต้อง (หากคุณได้รับไฟล์ไม่พบข้อผิดพลาดตรวจสอบให้แน่ใจว่าbinโฟลเดอร์GNUstep MSYSอยู่ในของคุณPATH)
  5. ใช้โปรแกรม "Hello World" อย่างง่ายนี้เพื่อทดสอบการทำงานของ GNUstep:

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. กลับไปที่พรอมต์คำสั่งและcdบันทึกตำแหน่งของโปรแกรม "Hello World" จากนั้นจึงรวบรวม: 2

    gcc -o helloworld.exe <HELLOWORLD>.m -I /GNUstep/GNUstep/System/Library/Headers -L /GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
  7. ในที่สุดจากพรอมต์คำสั่งพิมพ์helloworldเพื่อเรียกใช้

ทั้งหมดที่ดีที่สุดและสนุกกับ Objective-C!


หมายเหตุ :

  1. ฉันใช้พา ธ การติดตั้งเริ่มต้น - ปรับบรรทัดคำสั่งของคุณตามนั้น
  2. ตรวจสอบให้แน่ใจว่าเส้นทางโฟลเดอร์ของคุณคล้ายกับของฉันมิฉะนั้นคุณจะได้รับข้อผิดพลาด

1
การติดตั้งที่แนะนำนี้ไม่ได้ทำงานบนพีซีของฉันเพราะฉันได้ติดตั้ง gcc ไว้แล้วซึ่งฉันใช้สำหรับ nasm ดังนั้นฉันเพิ่งได้รับการแก้ไขgcc -o helloworld...ไปc:\gnustep\bin\gcc -o helloworld...และการทำงาน ทางเลือกอื่นคือการปรับเปลี่ยนตัวแปรสภาพแวดล้อมที่ฉันไม่ได้ทำตั้งแต่ฉันเพิ่งเห็นการเห็นวัตถุประสงค์ C. ขอบคุณ teshguru ถึงคำตอบ
Martin Berger

ลองลบการจัดรูปแบบโค้ดที่มีชื่อของสิ่งต่าง ๆ GNUstep MYSY ไม่ใช่รหัส แต่เป็นชื่อของซอฟต์แวร์ หากคุณต้องการบางสิ่งบางอย่างที่โดดเด่นคุณอาจลองทำให้กล้าลงมือ? และหากมีบางสิ่งเชื่อมต่อกับแท็กให้พิจารณาใช้ตัวคั่นแท็ก แต่ไม่มีเหตุผลใดที่จะใส่ชื่อที่เหมาะสมลงในส่วนของแท็ก
Wolfpack'08

เมื่อใช้ yhis c: \ gnustep \ bin \ gcc -o helloworld.exe helloworld.m -I / GNUstep / GNUstep / ระบบ / ไลบรารี / ส่วนหัว -L / GNUstep / GNUstep / ระบบ / ไลบรารี / ไลบรารี -std = c99 -lobc - lgnustep-base -fconstant-string-class = NSConstantString มันทำให้ฉันสน
Dalvik

13

นอกจากนี้:

Cocotron เป็นโครงการโอเพนซอร์ซซึ่งมีเป้าหมายที่จะใช้ Objective-C API ข้ามแพลตฟอร์มซึ่งคล้ายกับที่อธิบายไว้ในเอกสาร Cocoa ของ Apple Inc. ซึ่งรวมถึง AppKit, Foundation, Objective-C runtime และ API สนับสนุนเช่น CoreGraphics และ CoreFoundation

http://www.cocotron.org/


4
โครงการ Cocotron ได้รับการออกแบบให้คอมไพล์ข้ามจาก XCode ไม่ใช่เขียนบน Windows และคอมไพล์แล้ว
Dan Udey

2
นี่ไม่ใช่คำตอบที่ดีฉันไม่แน่ใจว่าทำไม OP เลือกนี่เป็น 'คำตอบ' เพราะ CoCotron สำหรับ Mac และ OP ต้องการโซลูชันที่ใช้ Windows
cbrulak

คุณถูกต้อง - ฉันรู้สึกตื่นเต้นเล็กน้อยเมื่อฉันอ่านสิ่งนี้: "เป้าหมายทั่วไปคือการให้การสนับสนุนอย่างสมบูรณ์บนแพลตฟอร์มที่ทำงานได้โครงการนี้ตั้งใจให้พกพาได้มากที่สุดอย่างไรก็ตามงานส่วนใหญ่ในเวลานี้คือ มุ่งเน้นไปที่การให้การสนับสนุนสำหรับ Microsoft Windows โดยเฉพาะอย่างยิ่งรุ่นที่ใช้ NT, 2000 ถึง Vista "
ลูเทอร์เบเกอร์

13

WinObjC? Windows Bridge สำหรับ iOS (ก่อนหน้านี้รู้จักกันในชื่อ 'Project Islandwood')

Windows Bridge สำหรับ iOS (หรือที่เรียกว่า WinObjC) เป็นโครงการโอเพ่นซอร์สของ Microsoft ที่ให้สภาพแวดล้อมการพัฒนา Objective-C สำหรับ Visual Studio / Windows นอกจากนี้ WinObjC ยังรองรับการใช้งานร่วมกับ iOS API ได้ ในขณะที่รุ่นสุดท้ายจะเกิดขึ้นในภายหลังในฤดูใบไม้ร่วงนี้ (ช่วยให้สะพานสามารถใช้ประโยชน์จากความสามารถในการใช้เครื่องมือใหม่ที่จะมาพร้อมกับ Visual Studio 2015 Update ที่กำลังจะมาถึง)

ขณะนี้บริดจ์พร้อมใช้งานสำหรับชุมชนโอเพนซอร์สในสถานะปัจจุบัน ระหว่างนี้และฤดูใบไม้ร่วง สะพาน iOS เป็นโครงการโอเพ่นซอร์สภายใต้ใบอนุญาต MIT ด้วยความทะเยอทะยานของโครงการทำให้นักพัฒนา iOS สามารถสร้างและเรียกใช้แอพบน Windows ได้อย่างง่ายดาย

Salmaan Ahmed มีโพสต์ในเชิงลึกบน Windows Bridge สำหรับ iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/หารือ คอมไพเลอร์รันไทม์การรวม IDE และบริดจ์คืออะไรและไม่ใช่ เหนือสิ่งอื่นใดซอร์สโค้ดสำหรับบริดจ์ iOS ใช้งานได้บนGitHub ทันที

สะพาน iOS รองรับทั้งแอพพลิเคชั่น Windows 8.1 และ Windows 10 ที่สร้างขึ้นสำหรับสถาปัตยกรรมโปรเซสเซอร์ x86 และ x64 และในไม่ช้าเราจะเพิ่มการปรับแต่งคอมไพเลอร์และรองรับ ARM ซึ่งจะเพิ่มการรองรับมือถือ


9

ฉันมีความรู้สึกที่หลากหลายเกี่ยวกับโครงการ Cocotron ฉันดีใจที่พวกเขาปล่อยซอร์สโค้ดและแบ่งปัน แต่ฉันไม่รู้สึกว่าพวกเขากำลังทำสิ่งที่ง่ายที่สุด

ตัวอย่าง.
Apple ได้เผยแพร่ซอร์สโค้ดไปยังรันไทม์วัตถุประสงค์ -cซึ่งรวมถึงคุณสมบัติและการรวบรวมขยะ อย่างไรก็ตามโครงการ Cocotron มีการใช้งานจริงของวัตถุประสงค์รันไทม์ ทำไมต้องพยายามทำซ้ำ? ไม่มีแม้แต่ไฟล์ Visual Studio Project ที่สามารถใช้สร้างไฟล์ objc.dll หรือถ้าคุณขี้เกียจจริงๆคุณสามารถคัดลอกไฟล์ DLL จากการติดตั้ง Safari บน Windows

พวกเขาไม่ได้สนใจที่จะใช้ประโยชน์จาก CoreFoundation ซึ่งเป็นแหล่งที่เปิดโดย Apple ฉันโพสต์คำถามเกี่ยวกับเรื่องนี้ แต่ไม่ได้รับคำตอบ

ฉันคิดว่าทางออกที่ดีที่สุดในปัจจุบันคือการใช้ซอร์สโค้ดจากหลายแหล่ง (Apple, CocoTron, GnuStep) และผสานเข้ากับสิ่งที่คุณต้องการ คุณจะต้องอ่านแหล่งข้อมูลจำนวนมาก แต่มันจะคุ้มค่ากับผลลัพธ์สุดท้าย


2
ขออภัยที่ไม่ตอบคำถามของคุณในกลุ่มเพื่อสรุป: APSL แย่มากและทั้ง runtime และ CF อยู่ภายใต้พวกเขา
Christopher Lloyd

1
อะไรที่เกี่ยวกับ APSL ( opensource.apple.com/license/apsl ) มันไม่ได้รุกรานเช่น GPL หากคุณแก้ไขโค้ดที่ครอบคลุมคุณต้องทำให้โค้ดนั้นพร้อมใช้งาน รหัสที่ครอบคลุมจะเป็นการแก้ไขใด ๆ ที่คุณทำกับ CoreFoundation ตัวอย่างเช่น แต่จะไม่รวมโปรแกรมจริงของคุณ คุณต้องทำเครื่องหมายการแก้ไขของคุณอย่างชัดเจน นี่เป็นเรื่องน่ารำคาญ แต่ก็คุ้มค่ากับการใช้รหัสที่ผ่านการทดสอบอย่างสูงของ Apple ใช่ไหม
Matthieu Cormier

8
ฉันไม่คิดว่าคุณเข้าใจวิธีการเลิกจ้างมันไม่ได้เป็นสิ่งที่พวกเขาสามารถทำเพื่อทุกคนในครั้งเดียวรหัสได้รับใบอนุญาตภายใต้ข้อกำหนดและใช้งานได้ภายใต้เงื่อนไขเหล่านั้นไปเรื่อย ๆ สิ่งที่สามารถเกิดขึ้นได้คือ Apple สามารถแยกส่วนบุคคล / บริษัท ที่พวกเขาคิดว่าละเมิดใบอนุญาต FSF ทำสิ่งนี้แล้วด้วยการละเมิด GPL คุณคิดว่า Apple เป็นมิตรกับนักพัฒนามากกว่า FSF หรือไม่? หากคุณคิดว่าเงื่อนไขนั้นไม่สำคัญและไม่มีความหมายฉันมั่นใจว่าคุณสามารถโน้มน้าวให้ Apple ทำตามกฎหมาย
Christopher Lloyd

8
ควรสังเกตว่า Apple ทำงานร่วมกับ FSF ในการเปลี่ยนแปลง APSL และ FSF พิจารณาว่า APSL เวอร์ชัน 2.0 เป็นลิขสิทธิ์ซอฟต์แวร์ฟรี gnu.org/philosophy/apsl.html
Sean

3
จากมุมมองของฉัน (ในฐานะคนที่จัดการกับ BSD, LGPL, MIT และใบอนุญาตอื่น ๆ ในผลิตภัณฑ์ที่เป็นกรรมสิทธิ์) ใบอนุญาตของ Apple นั้น จำกัด น้อยกว่า GPL - ซึ่งตรงไปตรงมานั้นเป็นความเจ็บปวดในก้น ถ้าฉันสามารถรับ BSD, MIT หรือ APSL ฉันอยากจะทำงานกับผู้ที่ไม่ใช่ GPL
Lloyd Sargent

8

ฉันรู้ว่านี่เป็นโพสต์ที่เก่ามาก แต่ฉันได้พบวิธีแก้ปัญหาที่เพิ่งวางขายเร็ว ๆ นี้และเปิดใช้งานฟีเจอร์ Objective-C 2.0 เกือบทั้งหมดบนแพลตฟอร์ม Windows

ด้วยการถือกำเนิดของ gcc 4.6 การสนับสนุนคุณสมบัติภาษา Objective-C 2.0 (บล็อก, ไวยากรณ์จุด, คุณสมบัติสังเคราะห์ ฯลฯ ) ถูกเพิ่มไปยัง Objective-C คอมไพเลอร์ (ดูบันทึกประจำรุ่นสำหรับรายละเอียดทั้งหมด) รันไทม์ของพวกเขายังได้รับการอัปเดตให้ทำงานเกือบจะเหมือนกับ Objective-C 2.0 ของ Apple เอง ในระยะสั้นนี้หมายความว่า (เกือบ) โปรแกรมใด ๆ ที่จะรวบรวมกับ Clang บน Mac อย่างถูกกฎหมายจะรวบรวมด้วย gcc 4.6 โดยไม่มีการดัดแปลง

คุณลักษณะด้านหนึ่งที่ไม่สามารถใช้งานได้คือพจนานุกรม / อาเรย์ / ตัวอักษรอื่น ๆ เนื่องจากมีการเขียนโค้ดลงใน Clang ทั้งหมดเพื่อใช้ NSDictionary ของ Apple, NSArray, NSNumber และคลาสอื่น ๆ

อย่างไรก็ตามถ้าคุณมีความสุขที่จะอยู่ได้โดยปราศจากกรอบที่กว้างขวางของ Apple คุณสามารถทำได้ ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ GNUStep และ Cocotron จัดหาไลบรารีคลาสของ Apple ที่ได้รับการดัดแปลงหรือคุณสามารถเขียนของคุณเอง (ตัวเลือกที่ฉันต้องการ)

MinGW เป็นวิธีหนึ่งที่จะได้รับ GCC 4.6 บนแพลตฟอร์ม Windows และสามารถดาวน์โหลดได้จากเว็บไซต์ MinGW ตรวจสอบให้แน่ใจเมื่อคุณติดตั้งคุณรวมถึงการติดตั้ง C, C ++, Objective-C และ Objective-C ++ ในขณะที่เป็นตัวเลือกฉันขอแนะนำให้ติดตั้งสภาพแวดล้อม MSYS

เมื่อติดตั้งแล้วซอร์ส Objective-C 2.0 สามารถรวบรวมได้ด้วย:

gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)

MinGW ยังมีการรองรับการคอมไพล์แอพพลิเคชั่น GUI Windows ดั้งเดิมพร้อมการ-mwindowsตั้งค่าสถานะ ตัวอย่างเช่น:

g++ -mwindows MyFile.cpp

ฉันยังไม่ได้ลอง แต่ฉันคิดว่าถ้าคุณห่อคลาส Objective-C ของคุณใน Objective-C ++ ที่เลเยอร์สูงสุดที่เป็นไปได้คุณควรจะสามารถรวม Windows GUI C ++ และ Objective-C เข้าด้วยกันในโปรแกรม Windows



6

หากคุณต้องการทดลองมีคอมไพเลอร์ Objective-C สำหรับ. NET (Windows) ที่นี่: qckapp


โปรแกรมนี้ไม่สามารถคอมไพล์ด้วย osc. # import <Foundation / Foundation.h> int main (int argc, const char * argv []) {NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@” กำลังทดสอบ ... \ n..1 \ n ... 2 \ n .... 3”); [ท่อระบายน้ำสระ]; กลับ 0 }
KIRAN KJ

5

คุณสามารถรับคอมไพเลอร์ c วัตถุประสงค์ที่จะทำงานกับ Windows และเล่นกับ Visual Studio 2008 \ 2010 ได้ที่นี่

open-c flite

เพียงดาวน์โหลดแหล่งข้อมูลล่าสุด คุณไม่จำเป็นต้องสร้าง CF-Lite ทั้งหมดมีวิธีแก้ปัญหาที่เรียกว่า objc.sln คุณจะต้องแก้ไขเส้นทางรวมบางอย่าง แต่จะสร้างได้ดี มีแม้กระทั่งโครงการทดสอบรวมอยู่ด้วยคุณจึงสามารถเห็นไฟล์ -c .m ที่ถูกรวบรวมและทำงานใน visual studio สิ่งหนึ่งที่น่าเศร้าคือมันใช้ได้กับ Win32 ไม่ใช่ x64 เท่านั้น มีรหัสการประกอบบางอย่างที่จะต้องมีการเขียนสำหรับ x64 เพื่อรองรับ


ฉันดาวน์โหลดและเรียกใช้โครงการนี้โดยใช้ Visual Studio 2013 และฉันได้รับข้อผิดพลาดนี้ 30 ครั้ง ข้อผิดพลาด 64 ข้อผิดพลาด C2632: 'char' ตามด้วย 'บูล' ผิดกฎหมาย C: \ opencflite-code-248-trunk \ include \ c99 \ stdbool.h 20 1 objc
Adam Mendoza

4

ความพยายามล่าสุดในการพอร์ต Objective C 2.0 ไปยัง Windows เป็นโครงการที่เป็นอัตนัย

จาก Readme:

อัตนัยเป็นความพยายามที่จะนำ Objective C 2.0 พร้อมรองรับ ARC มายัง Windows

โครงการนี้เป็นของแยก objc4-532.2 รันไทม์ Objective C ซึ่งมาพร้อมกับ OS X 10.8.5 พอร์ตสามารถถูกคอมไพล์ข้ามบน OS X โดยใช้ llvm-clang รวมกับ MinGW linker

มีข้อ จำกัด บางอย่างซึ่งหลายเรื่องเป็นเรื่องของงานพิเศษขณะที่คนอื่น ๆ เช่นข้อยกเว้นและบล็อกขึ้นอยู่กับงานที่จริงจังมากขึ้นในโครงการของบุคคลที่สาม ข้อ จำกัด คือ:

• 32- บิตเท่านั้น - 64- บิตกำลังดำเนินการอยู่

•การเชื่อมโยงแบบคงที่เท่านั้น - การเชื่อมโยงแบบไดนามิกกำลังดำเนินการอยู่

•ไม่มีการปิด / บล็อก - จนกว่า libdispatch จะรองรับมันใน Windows

•ไม่มีข้อยกเว้น - จนกระทั่งเสียงดังกราวรองรับใน Windows

•ไม่มีแบบเก่า GC - จนกว่าจะมีใครสนใจ ...

• Internals: ไม่มี vtables, ไม่รองรับ gdb, ธรรมดา malloc, ไม่มี preoptimizations - สิ่งเหล่านี้บางอย่างจะพร้อมใช้งานภายใต้ build 64 บิต

•ในปัจจุบันจำเป็นต้องมีคอมไพเลอร์เสียงดังกราวปะ แพตช์เพิ่มแฟล็ก -fobjc-runtime = subj

โครงการนี้มีอยู่ในGithubและยังมีเธรดในกลุ่ม Cocotron ที่แสดงถึงความคืบหน้าและปัญหาที่พบ



0

ถ้าคุณพอใจกับสภาพแวดล้อมของ Visual Studio

โครงการขนาดเล็ก: jGRASP with gcc โครงการขนาดใหญ่: Cocotron

ผมได้ยินมีการเลียนแบบ แต่ฉันสามารถหาเพียงแอปเปิ้ลที่สอง Emulator http://virtualapple.org/ ดูเหมือนว่า จำกัด เฉพาะเกม


0

ก่อนอื่นลืมเกี่ยวกับGNUStep tools ทั้งProjectManagerมิได้ProjectCenterสามารถเรียกว่า IDE ดูเหมือนว่าทุกคนจากโครงการGNUStepจะติดอยู่ในช่วงปลายยุค 80 (ซึ่งเป็นตอนที่NeXTSTEPปรากฏตัวครั้งแรก)

เป็นกลุ่ม

ctagsรองรับ Objective-C ตั้งแต่r771 (อย่าลืมเลือกรุ่น pre-release 5.9 และเพิ่ม--langmap=ObjectiveC:.m.hในบรรทัดคำสั่งดูที่นี่ ) ดังนั้นคุณจะมีโค้ดที่สมบูรณ์ / การนำทางแท็ก

นี่เป็นสั้นHOWTOเกี่ยวกับการเพิ่มการสนับสนุน Objective-C เพื่อเป็นกลุ่ม tagbar ปลั๊กอิน

Emacs

เช่นเดียวกับการetagsจัดส่งที่ทันสมัย Emacsen เพื่อให้คุณสามารถเริ่มต้นด้วย Emacs วัตถุประสงค์โหมด C YASnippetจะให้แม่แบบที่มีประโยชน์:

YASnippet objc-mode

และถ้าคุณต้องการบางสิ่งที่ฉลาดกว่าการเติมโค้ดตามแท็กให้ดูที่คำถามนี้

คราส

CDTรองรับMakefileโครงการที่ใช้:

ป้อนคำอธิบายรูปภาพที่นี่

- ดังนั้นในทางเทคนิคคุณสามารถสร้างโปรเจ็กต์ Objective-C ของคุณนอกกรอบ (บน Windows คุณจะต้องใช้เครื่องมือCygwinหรือMinGW ) ปัญหาเดียวคือเครื่องมือแก้ไขรหัสซึ่งจะรายงานข้อผิดพลาดมากมายกับสิ่งที่คิดว่าเป็นรหัสC ที่แท้จริง(การปิดการตรวจสอบรหัสแบบทันทีทันใดสามารถปิดได้ แต่ยัง ... ) หากคุณต้องการเน้นไวยากรณ์ที่เหมาะสมคุณสามารถเพิ่มEclimในEclipseของคุณและเพลิดเพลินไปกับคุณสมบัติที่ดีของEclipseและVim (ดูด้านบน)

ปลั๊กอินEclipse ที่มีแนวโน้มอีกอันหนึ่งคือColorerแต่ก็ยังไม่รองรับ Objective-C ในตอนนี้ โปรดอย่าลังเลที่จะส่งคำขอคุณสมบัติ

SlickEdit

SlickEditหมู่คุณสมบัติอื่น ๆของ IDE ดีไม่ สนับสนุนวัตถุประสงค์ -C ในขณะที่มันค่อนข้างซับซ้อนในการเรียนรู้ (ไม่ซับซ้อนเท่า Emacs) แต่ฉันเชื่อว่านี่เป็นตัวเลือกที่ดีที่สุดของคุณหากคุณไม่สนใจซื้อ (ราคาค่อนข้างแพง)

นอกจากนี้ยังมีปลั๊กอิน Eclipseซึ่งสามารถใช้เป็นทางเลือกแทนตัวแก้ไขแบบสแตนด์อะโลน

KDevelop

มีข่าวลือว่ามีKDevelop patch (อายุ 15 ปี แต่ใครสนใจล่ะ) โดยส่วนตัวฉันไม่คิดว่าKDevelopนั้นเหนือกว่าฟีเจอร์เมื่อเทียบกับEmacsenดังนั้นฉันจะไม่ลองเลย


ข้อมูลข้างต้นยังนำไปใช้กับการพัฒนา Objective-C บน Linux เนื่องจากเครื่องมือทั้งหมดที่กล่าวถึงนั้นพกพาได้ไม่มากก็น้อย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.