1

我正在尝试在 Xcode 中为多个目标构建,以简化创建我的应用程序的“精简版”和“专业版”版本的过程。从理论上讲,这很棒,我可以将定义传递给GCC_PREPROCESSOR_DEFINITIONS我的代码中使用。但是,由于尝试在模拟器中启动第二个目标时出错,我实际上无法使其正常工作:Failed to launch simulated application: Unknown error.

这是我用来创建附加目标的简单过程:

  1. 将#ifdef MYAPP_PRO 添加到源文件以根据应用程序的 pro/lite 版本修改行为(并验证应用程序是否按预期工作)
  2. 从菜单中选择Project> New Target...,然后选择“Cocoa Touch Application”(名为 MyAppPro)
  3. 编辑新的目标设置;添加GCC_PREPROCESSOR_DEFINITIONS用户定义的设置并将值设置为“MYAPP_PRO”(无引号)
  4. 将活动目标设置为“MyAppPro”;构建并运行。
  5. Failed to launch simulated application: Unknown error.
  6. 将 Info.plist 中的所有设置复制到 MyAppPro-Info.plist 并重试
  7. Failed to launch simulated application: Unknown error.

构建完成得很好,但我无法在模拟器中运行。

编辑 .xcodeproj 目录中的 project.pbxproj,我注意到两个目标定义的构建设置之间存在一些关键差异。我尝试手动编辑该文件,但一定是做错了什么,因为之后我无法将它加载到 Xcode 中。

原始目标的“调试”构建设置:

        buildSettings = {
            ALWAYS_SEARCH_USER_PATHS = YES;
            ARCHS = "$(ARCHS_STANDARD_32_BIT)";
            "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
            GCC_C_LANGUAGE_STANDARD = c99;
            GCC_WARN_ABOUT_RETURN_TYPE = YES;
            GCC_WARN_UNUSED_VARIABLE = YES;
            ONLY_ACTIVE_ARCH = YES;
            PREBINDING = NO;
            SDKROOT = iphoneos2.2.1;
        };

Thew 新的 MyAppPro 目标的“调试”构建设置:

        buildSettings = {
            ALWAYS_SEARCH_USER_PATHS = NO;
            CODE_SIGN_IDENTITY = "iPhone Developer";
            COPY_PHASE_STRIP = NO;
            GCC_DYNAMIC_NO_PIC = NO;
            GCC_OPTIMIZATION_LEVEL = 0;
            GCC_PRECOMPILE_PREFIX_HEADER = YES;
            GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/UIKit.framework/Headers/UIKit.h";
            INFOPLIST_FILE = "MyAppPro-Info.plist";
            INSTALL_PATH = "$(HOME)/Applications";
            OTHER_LDFLAGS = (
                "-framework",
                Foundation,
                "-framework",
                UIKit,
            );
            PREBINDING = NO;
            PRODUCT_NAME = MyAppPro;
            SDKROOT = iphoneos2.2.1;
        };
4

2 回答 2

5

你没有说你是否真的向目标添加了源文件。新目标(与新项目不同)没有源文件模板;你必须自己添加它们。所以模拟器可能会告诉你“你构建成功了,但是没有什么可以运行”。

于 2009-04-05T01:07:46.043 回答
0

复制目标。我刚刚犯了同样的错误,并意识到我做了什么:“新目标”创建的是一张白纸(尽管这不是很明显),即使你尝试包含一些你可能会错过的东西。

于 2011-01-21T12:51:53.583 回答