代码之家  ›  专栏  ›  技术社区  ›  Coocoo4Cocoa

没有.xcodeproj目录的项目,如何打开?

  •  4
  • Coocoo4Cocoa  · 技术社区  · 16 年前

    我发现一些开放源码项目,大多是较老的,缺少.xcodeproj目录层次结构。似乎所有其他重要文件都在那里。

    奇怪的是,我想知道这些项目是如何通过Xcode访问的?我想编译它们,打破它们,修复它们等等。有没有办法打开这些更遗留的项目?

    以下是一个开源的FreeCell项目的内容:

    $ find . -type f  
    ./.DS_Store  
    ./Card.h  
    ./Card.m
    ./Cards/bonded.png
    ./Cards/large-bonded.png
    ./Cards/unedited-bonded.png
    ./CardView.h
    ./CardView.m
    ./Dutch.lproj/Credits.html
    ./Dutch.lproj/Help/Freecell.html
    ./Dutch.lproj/Help/game.html
    ./Dutch.lproj/Help/game.jpg
    ./Dutch.lproj/Help/game.png
    ./Dutch.lproj/Help/Help idx
    ./Dutch.lproj/Help/history.html
    ./Dutch.lproj/Help/history.jpg
    ./Dutch.lproj/Help/history.png
    ./Dutch.lproj/Help/links.html
    ./Dutch.lproj/Help/logo.png
    ./Dutch.lproj/Help/logos.png
    ./Dutch.lproj/Help/move-end.jpg
    ./Dutch.lproj/Help/move-end.png
    ./Dutch.lproj/Help/move-start.jpg
    ./Dutch.lproj/Help/move-start.png
    ./Dutch.lproj/Help/play.html
    ./Dutch.lproj/Help/preferences.html
    ./Dutch.lproj/Help/preferences.jpg
    ./Dutch.lproj/Help/preferences.png
    ./Dutch.lproj/Help/tips.html
    ./Dutch.lproj/InfoPlist.strings
    ./Dutch.lproj/Localizable.strings
    ./Dutch.lproj/MainMenu.nib/classes.nib
    ./Dutch.lproj/MainMenu.nib/Freecell.tiff
    ./Dutch.lproj/MainMenu.nib/info.nib
    ./Dutch.lproj/MainMenu.nib/objects.nib
    ./English.lproj/Credits.html
    ./English.lproj/Help/Freecell.html
    ./English.lproj/Help/game.html
    ./English.lproj/Help/game.png
    ./English.lproj/Help/Help idx
    ./English.lproj/Help/history.html
    ./English.lproj/Help/history.png
    ./English.lproj/Help/links.html
    ./English.lproj/Help/logo.png
    ./English.lproj/Help/logos.png
    ./English.lproj/Help/move-end.png
    ./English.lproj/Help/move-start.png
    ./English.lproj/Help/play.html
    ./English.lproj/Help/preferences.html
    ./English.lproj/Help/preferences.png
    ./English.lproj/Help/tips.html
    ./English.lproj/InfoPlist.strings
    ./English.lproj/Localizable.strings
    ./English.lproj/MainMenu.nib/classes.nib
    ./English.lproj/MainMenu.nib/info.nib
    ./English.lproj/MainMenu.nib/keyedobjects.nib
    ./Finnish.lproj/Credits.html
    ./Finnish.lproj/Help/Freecell.html
    ./Finnish.lproj/Help/game.html
    ./Finnish.lproj/Help/game.png
    ./Finnish.lproj/Help/Help idx
    ./Finnish.lproj/Help/history.html
    ./Finnish.lproj/Help/history.png
    ./Finnish.lproj/Help/links.html
    ./Finnish.lproj/Help/logo.png
    ./Finnish.lproj/Help/logos.png
    ./Finnish.lproj/Help/move-end.png
    ./Finnish.lproj/Help/move-start.png
    ./Finnish.lproj/Help/play.html
    ./Finnish.lproj/Help/preferences.html
    ./Finnish.lproj/Help/preferences.png
    ./Finnish.lproj/Help/tips.html
    ./Finnish.lproj/InfoPlist.strings
    ./Finnish.lproj/Localizable.strings
    ./Finnish.lproj/MainMenu.nib/classes.nib
    ./Finnish.lproj/MainMenu.nib/info.nib
    ./Finnish.lproj/MainMenu.nib/keyedobjects.nib
    ./Freecell.icns
    ./Freecell.pbproj/alisdair.mode1
    ./Freecell.pbproj/alisdair.pbxuser
    ./Freecell.pbproj/project.pbxproj
    ./Freecell_Prefix.h
    ./French.lproj/.typeAttributes.dict
    ./French.lproj/Credits.html
    ./French.lproj/Help/Freecell.html
    ./French.lproj/Help/game.html
    ./French.lproj/Help/game.png
    ./French.lproj/Help/Help idx
    ./French.lproj/Help/history.html
    ./French.lproj/Help/history.png
    ./French.lproj/Help/links.html
    ./French.lproj/Help/logo.png
    ./French.lproj/Help/logos.png
    ./French.lproj/Help/move-end.png
    ./French.lproj/Help/move-start.png
    ./French.lproj/Help/play.html
    ./French.lproj/Help/preferences.html
    ./French.lproj/Help/preferences.png
    ./French.lproj/Help/tips.html
    ./French.lproj/InfoPlist.strings
    ./French.lproj/Localizable.strings
    ./French.lproj/MainMenu.nib/classes.nib
    ./French.lproj/MainMenu.nib/info.nib
    ./French.lproj/MainMenu.nib/objects.nib
    ./Game.h
    ./Game.m
    ./GameController.h
    ./GameController.m
    ./GameView.h
    ./GameView.m
    ./History.h
    ./History.m
    ./HistoryController.h
    ./HistoryController.m
    ./Japanese.lproj/Credits.html
    ./Japanese.lproj/Credits.rtf
    ./Japanese.lproj/Help/Freecell.html
    ./Japanese.lproj/Help/game.html
    ./Japanese.lproj/Help/game.png
    ./Japanese.lproj/Help/Help idx
    ./Japanese.lproj/Help/history.html
    ./Japanese.lproj/Help/history.png
    ./Japanese.lproj/Help/links.html
    ./Japanese.lproj/Help/logo.png
    ./Japanese.lproj/Help/logos.png
    ./Japanese.lproj/Help/move-end.png
    ./Japanese.lproj/Help/move-start.png
    ./Japanese.lproj/Help/play.html
    ./Japanese.lproj/Help/preferences.html
    ./Japanese.lproj/Help/preferences.png
    ./Japanese.lproj/Help/tips.html
    ./Japanese.lproj/InfoPlist.strings
    ./Japanese.lproj/Localizable.strings
    ./Japanese.lproj/MainMenu.nib/classes.nib
    ./Japanese.lproj/MainMenu.nib/Freecell.tiff
    ./Japanese.lproj/MainMenu.nib/info.nib
    ./Japanese.lproj/MainMenu.nib/objects.nib
    ./Licence.rtf
    ./main.m
    ./PreferencesController.h
    ./PreferencesController.m
    ./Result.h
    ./Result.m
    ./Spanish.lproj/Credits.html
    ./Spanish.lproj/Credits.rtf
    ./Spanish.lproj/Help/Freecell.html
    ./Spanish.lproj/Help/game.html
    ./Spanish.lproj/Help/game.png
    ./Spanish.lproj/Help/Help idx
    ./Spanish.lproj/Help/history.html
    ./Spanish.lproj/Help/history.png
    ./Spanish.lproj/Help/links.html
    ./Spanish.lproj/Help/logo.png
    ./Spanish.lproj/Help/logos.png
    ./Spanish.lproj/Help/move-end.png
    ./Spanish.lproj/Help/move-start.png
    ./Spanish.lproj/Help/play.html
    ./Spanish.lproj/Help/preferences.html
    ./Spanish.lproj/Help/preferences.png
    ./Spanish.lproj/Help/tips.html
    ./Spanish.lproj/InfoPlist.strings
    ./Spanish.lproj/Localizable.strings
    ./Spanish.lproj/MainMenu.nib/classes.nib
    ./Spanish.lproj/MainMenu.nib/Freecell.tiff
    ./Spanish.lproj/MainMenu.nib/info.nib
    ./Spanish.lproj/MainMenu.nib/objects.nib
    ./Table.h
    ./Table.m
    ./TableLocation.h
    ./TableLocation.m
    ./TableMove.h
    ./TableMove.m
    ./vccRand.c
    ./vccRand.h     
    
    2 回复  |  直到 16 年前
        1
  •  10
  •   Jim Dovey    16 年前

    这是使用ProjectBuilder创建的,该IDE由苹果公司(以及其前一个)提供,最终被重命名为Xcode。项目文件是freecell.pbproj,您应该能够将其导入Xcode,而不会有太多麻烦。

    理论上,您应该能够使用file->open并指向.pbproj包装器;xcode然后可能会要求升级项目,这通常涉及创建新的.xcodeproj版本。

        2
  •  1
  •   Das_Human    16 年前

    我建议另一种方法(它帮助了我,也许也会帮助别人)。方法如下(假设已安装xcode3.0):
    1)将.pbproj重命名为.xcode
    2)使用粘度计( http://www.mucommander.com/index.php#download )导航到.xcode文件夹。在文件夹中,您可以找到3个文件。*.mode1、.pdxuser、.pbxproj(其中*是一些用户名)。
    3)现在用您的用户名替换指定的*.mode1和*.pbxuser用户名。
    (例如johndow.mode1到myusername.mode1)
    4)之后,将.mode1替换为.mode1v3(例如myusername.mode1到myusername.mode1v3)
    5)选择myusername.pbxproj并点击查看[f3]按钮(位于mncommant屏幕的左下角),然后找到该行(最上面的行):
    存档版本=1;
    类={
    };
    对象版本=39;
    对象= {
    用44替换39(数字取决于安装的Xcode版本;您可以通过创建一个新项目并在其*.pbxproj中定位相同的行来找到您的代码)。关闭并保存编辑的文档。
    这就是全部!现在尝试用xcode打开项目。

    一些可选步骤。必须在使用xcode打开和关闭项目之后(完成前一节之后)进行。
    6)仍在同一文档中,向下滚动并定位此行:
    cfBundleSortVersionString
    0.5.0
    C联邦签名
    ?????
    CFBAN版本
    0.5.0
    将0.5.0替换为1.0.23或从1.0.0开始的任何其他数字。数字对应于您的产品版本。
    7)现在定位这条线:
    奥斯本图书馆

    com.apple.iokit.iocifamily网站
    一点四
    com.apple.iokit.iostorage系列
    一点三
    com.apple.kernel.iokit(苹果内核)
    一点一
    将每个任意编号替换为系统上安装的版本号。您可以通过键入“kextfind-bundle id com.apple.iokit.iocifamily”(其中com.apple)来查找版本。 . .*是您要查找的密钥)在终端和击enter中。
    你会得到这样的东西:
    /系统/库/扩展/iopcifamily.kext
    现在复制你在muommander位置栏中得到的行。选择version.plist并点击 查看[F3]按钮。在以下位置查找号码:
    CFBAN版本
    二点六
    这个号码是你一直在找的。
    8)找到“模块版本=0.5”;行(必须有多个实例)。将0.5替换为1.0,其中0.5是0.5.0(1.0.23)的前两位数字
    9)找到“compatibilityversion=”xcode 2.5“;行,将“2.5”替换为“3.0”(xcode版本)。
    结束。