Gemischten .c und .m Code in einem Objective-C Projekt.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Gemischten .c und .m Code in einem Objective-C Projekt.

    Moin.

    Ich hätte da gern eine Frage.

    Für ein Projekt muss ich C und Objective-C vermengen. Idealerweise so, dass der Objective-C Kram sehr spezifisch ist während der C Kram sehr allgemein gehalten wird.
    Insofern habe ich also diverse .c und diverse .m in meinem Projekt herumliegen.

    Unglücklicherweise möchte Xcode CodeCompletion und SymbolLinking nur für die .m und die .h Dateien bereit stellen.
    Bei den .c Dateien weigert es sich sowohl in den Header zu springen (via cmd+Klick) als auch die simpelsten Dinge wie printf() aufzuzeigen.

    Welche Möglichkeiten habe ich, beide Codeformate in einer IDE zu nutzen ohne ein eigenes Xcode C Projekt erstellen zu müssen?
    Angelegt habe ich es als ganz normales iPhone Projekt unter iOS 7.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • In dieser speziellen Konstellation nicht.

    Also die .pbxproj Files sind in jeder Zeile unterschiedlich, hauptsächlich weil die IDs nicht persistieren. ;)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Die Unterschiede halten sich in Grenzen:

    C-Quellcode

    1. < path = "C-Test";
    2. ---
    3. > name = Frameworks;
    4. > sourceTree = "<group>";
    5. > };
    6. > CBE008ED18A28053008128C3 /* Foundation-Test */ = {
    7. > isa = PBXGroup;
    8. > children = (
    9. > CBE008EE18A28053008128C3 /* main.m */,
    10. > CBE008F218A28053008128C3 /* Foundation_Test.1 */,
    11. > CBE008F018A28053008128C3 /* Supporting Files */,
    12. > );
    13. > path = "Foundation-Test";
    14. > sourceTree = "<group>";
    15. > };
    16. > CBE008F018A28053008128C3 /* Supporting Files */ = {
    17. > isa = PBXGroup;
    18. > children = (
    19. > CBE008F118A28053008128C3 /* Foundation-Test-Prefix.pch */,
    20. > );
    21. > name = "Supporting Files";
    22. < name = "C-Test";
    23. < productName = "C-Test";
    24. < productReference = CBE008D318A2803E008128C3 /* C-Test */;
    25. ---
    26. > name = "Foundation-Test";
    27. > productName = "Foundation-Test";
    28. > productReference = CBE008E818A28053008128C3 /* Foundation-Test */;
    29. > GCC_PRECOMPILE_PREFIX_HEADER = YES;
    30. > GCC_PREFIX_HEADER = "Foundation-Test/Foundation-Test-Prefix.pch";
    Alles anzeigen


    Ich sehe da nix.

    Jedenfalls klappt es in den einzelnen Projekten prima, im MischMasch hingegen nicht.

    Nächster Test: C-Projekt mit .m Datei bestücken.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Also bei mir ist es reproduzierbar:

    C-Projekt -> .m Datei dazu -> klappt
    Objective-C-Projekt -> .c Datei dazu -> klappt nicht

    Xcode Version 5.0.2 (5A3005)

    Das verstehe ich nicht... o.O
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • macmoonshine schrieb:

    Mit der genannten Konfiguration funktioniert das bei mir. Vielleicht hilft es, wenn Du Derived Data wegschmeißt.

    Nein, hilft nicht.
    Auch nicht bei einem Clean.

    Hab mir sogar ein komplett neues Single View iPhone Projekt gemacht.
    .c Datei hineingelegt, läuft nicht.

    Projekte und Workspaces komplett schließen bis nix mehr übrig ist, Xcode neu starten, läuft.
    Danke. :)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Marco Feltmann schrieb:

    Also bei mir ist es reproduzierbar:

    C-Projekt -> .m Datei dazu -> klappt
    Objective-C-Projekt -> .c Datei dazu -> klappt nicht

    Xcode Version 5.0.2 (5A3005)

    Das verstehe ich nicht... 8|


    Selbiges Problem haben wir bei uns in der Firma auch mit Objective-C und C++ Code... Wenn du da ne Lösung findest, sag mal bitte hier Bescheid...
    Man kann alles schaffen. Man muss es nur wollen ;)
    www.regetskcob.github.io
  • Also bei mir half ein Neustart von Xcode nach Clean und Schließen aller Projekte.

    Ansonsten werde ich es so halten wie auch unter Eclipse mit NDK und SDK:
    Ein Projekt für die Zielplattform im spezifischen Code in den Workspace legen. (Java/Objective-C/Objective-C++)
    Ein Projekt für den generischen Code in den Workspace legen. (C/C++)
    Symbolischer Link zum Verzeichnis mit dem generischen Code in das Projekt für die Zielplattform packen und von dort aus darauf zugreifen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P