{"id":715,"date":"2003-11-19T12:00:00","date_gmt":"2003-11-19T17:00:00","guid":{"rendered":"\/?p=715"},"modified":"2022-01-29T13:54:16","modified_gmt":"2022-01-29T18:54:16","slug":"mac_os_x_103_developer_to","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2003\/11\/19\/mac_os_x_103_developer_to\/","title":{"rendered":"Mac OS X 10.3 Developer Tools"},"content":{"rendered":"<p>\nAll things considered, I wish I hadn&rsquo;t updated my development machine to Mac OS X 10.3. I&rsquo;m generally very pleased with Panther, but the developer tools have so far done nothing but waste my time.\n<\/p>\n\n<p>\nI tried to edit a nib in Interface Builder, to add a few columns to a table. That was easy enough, but when I built and ran the application the new columns didn&rsquo;t show. I opened the nib in IB again, and it showed the columns just fine. I don&rsquo;t know what went wrong, since I didn&rsquo;t change the nib format or use any new 10.3 attributes. I checked out a fresh copy of the nib from CVS and made the change again. Still no dice. After a few more tries, it eventually worked. I&rsquo;m not sure why.\n<\/p>\n\n<p>\nI loaded some of my Project Builder projects into Xcode. The files are packages whose names end with <tt>.pbproj<\/tt>, so of course the system still thinks they belong to Project Builder. I used the Finder to override the files so they would open in Xcode. To do this, it saved two invisible files inside each project: <tt>.LSOverride<\/tt> and <tt>Icon\\r<\/tt>. (The <tt>\\r<\/tt> is ASCII 13.) BBEdit didn&rsquo;t like this; it kept giving me error -43 (file not found) when I tried to Find Lurkers in my sandbox. Eventually I figured out that it didn&rsquo;t like the <tt>Icon\\r<\/tt> files. I couldn&rsquo;t figure out how to add the literal text <tt>Icon\\r<\/tt> to my <tt>.cvsignore<\/tt> file, so I ended up settling for <tt>Icon?<\/tt>. (The question mark is a wildcard that matches a single character.)\n<\/p>\n\n<p>\nXcode has been giving me a lot of trouble in addition to the <a href=\"http:\/\/www.mjtsai.com\/blog\/2003\/11\/06\/xcode_external_editors.html\">issues<\/a> I previously mentioned. I let Xcode update my targets to its native format, deleted the classic targets, and fixed up all the names. It insisted on creating new <tt>Info.plist<\/tt> files for all my non-tool targets and placing them next to the project file.\n<\/p>\n\n<p>\nI try to keep the project folder tidy, so I moved the files into another folder. Xcode lost track of them. I updated the paths in the project window so that it could find them, only it didn&rsquo;t <em>really<\/em> find them. The corresponding text fields in the Properties tab of the Target settings were blank, and even when I re-entered the information Xcode refused to use it, or even save it when I closed the project. Eventually I figured out that I had to update the relative path in the <tt>INFOPLIST_FILE<\/tt> setting in the Build tab of the Target settings.\n<\/p>\n\n<p>\nXcode still wouldn&rsquo;t compile the code, though. It seems there&rsquo;s a bug in the shell script that Xcode generates when compiling yacc files. It gets some of the relative paths wrong. I didn&rsquo;t know how to customize Xcode&rsquo;s handling of derived source files, so I decided to go back to the classic target.\n<\/p>\n\n<p>\nThe yacc files worked fine with the classic target, but Xcode gave me some errors about the <a href=\"http:\/\/developer.apple.com\/technotes\/tn2002\/tn2064.html\">availability macros<\/a>. (These let me develop on the latest version of Mac OS X and make sure I&rsquo;m not using any new APIs that will prevent my code from running on older versions of the OS.) Often, these sorts of errors in Project Builder and Xcode go away if I do a clean build. This time some of them did, but not all.\n<\/p>\n\n<p>\nNo problem, I thought, I&rsquo;ll use Xcode&rsquo;s new cross-development feature, which lets me develop using the 10.2.7 headers while running on 10.3. Unfortunately, although I could select that option in my project, Xcode ignored it for classic targets. So I was back to using the availability macros with the 10.3 SDK. I decided that I could do without <tt>MAC_OS_X_VERSION_MIN_REQUIRED<\/tt>, which was causing the errors, and just use <tt>MAC_OS_X_VERSION_MAX_ALLOWED<\/tt>. This stopped the errors, but then Xcode started complaining about some glyph and animation stuff in AppKit. It turns out that <tt>NSGraphics.h<\/tt> and <tt>NSLayoutManager.h<\/tt> have bugs; some new symbols aren&rsquo;t protected by the availability macros. I authenticated and fixed the header files.\n<\/p>\n\n<p>\nNow everything builds in Xcode using classic targets, which means that I can&rsquo;t take advantage of new features like distributed builds. I could probably update a dozen or so of the targets to native, but I&rsquo;d rather get back to coding.\n<\/p>","protected":false},"excerpt":{"rendered":"<p>All things considered, I wish I hadn&rsquo;t updated my development machine to Mac OS X 10.3. I&rsquo;m generally very pleased with Panther, but the developer tools have so far done nothing but waste my time. I tried to edit a nib in Interface Builder, to add a few columns to a table. That was easy [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2022-01-29T18:41:44Z","apple_news_api_id":"2743432a-1fa8-43be-a1f5-0da1877e0477","apple_news_api_modified_at":"2022-01-29T18:54:19Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAQ==","apple_news_api_share_url":"https:\/\/apple.news\/AJ0NDKh-oQ76h9Q2hh34Edw","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[30,1388,226],"class_list":["post-715","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-mac","tag-mac-os-x-10-3-panther","tag-xcode"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=715"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/715\/revisions"}],"predecessor-version":[{"id":34831,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/715\/revisions\/34831"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}