我有一个Xcode 7.3工作区,有三个项目,App,FrameworkA和FrameworkB.每个项目都有一个目标.这是iOS,因此框架目标是Cocoa Touch Frameworks,这意味着包含动态链接共享库的框架.
应用程序依赖于依赖于框架B的框架A.这些依赖关系正在工作,只要A正确链接到B的构建产品,并且应用程序正确链接并嵌入框架A和B(因为您不能有一个框架嵌入另一个框架,似乎应用程序包需要链接和嵌入直接和传递依赖.)
但这是我的问题.框架A和B具有通常的构建配置,即调试和发布.App有一个额外的构建配置LocalRelease,它由Run构建操作触发,用于构建优化的构建(如Release),但代码用开发者身份(如Debug)签名.
当我尝试用这个LocalRelease构建配置构建App时,这打破了构建,因为它打破了框架A和B的依赖关系.我相信这是因为这些框架没有LocalRelease构建配置,所以Xcode从不将它们的构建产品放入LocalRelease-iphoneos文件夹,与App一样.
所以我的狭隘问题是,如何配置构建设置,以便具有非标准构建配置名称的项目(如LocalRelease)可以依赖于仅使用标准构建配置名称的其他项目?我希望有一个简单的方法可以做到这一点,不需要添加脚本或xcconfig文件,但如果有必要,我很乐意理解为什么.
我的更广泛的问题是,引入额外的构建配置通常是一个坏主意,因为它们不允许共享工作区中项目之间的依赖项的平滑交互?我被引导定义第三个配置,因为我想要一个优化的本地构建,我不想定义一个新的方案,我希望构建类型的选择由各种构建操作(运行,配置文件,发布)表示单一计划.
但也许这是错误的做法.只要构建配置名称驱动构建产品目录路径,并且依赖项目需要在共享目录中找到彼此的构建产品,似乎向项目引入非标准构建配置名称将破坏与之的互操作依赖于其他项目.
对于我的自动化测试,我有一个项目添加到TeamCity服务器和2个代理池,一个是Windows服务器,另一个是MAC.默认代理程序池是WIN,但我想在MAC服务器上运行我的测试.若要更改代理池MAC,我试图通过设置添加代理需求 teamcity.agent.name到MAC server从列表中,但不会添加到与项目相关的相容剂的名单,但加入的相容性助剂与在它上面这样的警告:Following agents belong to the agent pools which are not associated with "Tests" project这里测试是我的项目的名称.
如何将MAC代理与我的项目相关联?
我正在尝试使用 CLion(最新版本 - 2019.3)来处理我的源存储库,该存储库已经使用了 CMake(即有一个CMakeLists.txt)。现在,该软件包有一些关于构建哪些目标的选项;默认情况下,它只构建一些测试,但如果您将选项设置为ON,则会编译并构建一堆测试。
不幸的是,我不太明白 CLion 在哪里可以让您为其生成的构建子目录设置 CMake 选项值。它真的强迫你使用默认值吗?还是我在主用户界面或首选项中遗漏了某些内容?
在我们的C/C++项目中,我们使用一个充满#ifdef和#defines的配置头(~1000行)
#if (defined(HW_1) || defined(SOME_TECHNOLOGY_SUPPORTED)) && defined(OTHER_TECHNOLOGY_SUPPORTED)
#define SOME_FEATURE_AVAILABLE
#endif
Run Code Online (Sandbox Code Playgroud)
在我们的构建配置中,我们预定义了一些传递给编译器的定义.这会在我们的配置头中产生不同的定义(如SOME_FEATURE_AVEILABLE).
由于我们的配置头很大,所以也有点混乱.
这个#define地狱还有其他选择吗?
或者是否有任何工具可以帮助查看在何种情况下设置了哪些定义.
我们正在开发嵌入式固件,因此我们不能用运行时替换条件编译.
"Visual Studio Express 2013 for Windows"允许我编译调试,发布或主控.虽然已知调试和发布之间的区别,但我从未听说过主编译选项.它与发布有什么不同?
如何在Swift条件编译语句中检查iOS部署目标?
我尝试过以下方法:
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0
// some code here
#else
// other code here
#endif
Run Code Online (Sandbox Code Playgroud)
但是,第一个表达式导致编译错误:
Expected '&&' or '||' expression
Run Code Online (Sandbox Code Playgroud) conditional-compilation buildconfiguration deployment-target ios swift
我正在尝试尽可能多地介绍Kotlin Android 库,但遇到了一个关于自定义 BuildConfig 变量的问题,更广为人知的是buildConfigField.
我想模拟这个变量来测试true和false值。
android {
defaultConfig {
buildConfigField "boolean", "ENABLE_LOG", "false"
}
flavorDimensions "log"
productFlavors {
loggable {
buildConfigField "boolean", "ENABLE_LOG", "true"
dimension "log"
}
notloggable {
dimension "log"
}
}
}
Run Code Online (Sandbox Code Playgroud)
fun buildClient(): MyClient {
var myClientBuilder : MyClient.Builder = MyClient.Builder();
if (BuildConfig.ENABLE_LOG) {
val interceptor = LoggingInterceptor();
interceptor.setLevel(LoggingInterceptor.Level.ALL);
myClientBuilder.addInterceptor(interceptor);
}
return myClientBuilder.build()
}
Run Code Online (Sandbox Code Playgroud)
@Test
fun buildClient_enableLog_oneInterceptor() {
// GIVEN …Run Code Online (Sandbox Code Playgroud) 关于哪个代码签名标识我应该在构建配置中使用哪个场景我都不清楚,如果有人能用最简单的方式解释它,我会很高兴.
这就是我所知道的:
我在Provisioning Portal中创建并在我的应用程序中实现开发配置文件和分发配置文件.

然后我根据不同的配置文件分配Project >> Build Settings >> Code Signing:

这是第一个问题:发布和发布有什么区别?哪一个应连接到Developer配置文件,哪一个应连接到Distribution配置文件?

我需要通过选择以下代码签名标识来定义构建配置,这有5个不同的步骤:

这是大问题...... 在哪种情况下我应该选择哪个代码签名标识?
我总是在同样的2台设备上运行应用程序:我的iPhone和iPad; 两者都在Provisioning Portal中定义并设置到配置文件中.我只想确保运行它可以在Simulator和Device上进行测试,然后再构建应用程序以便上传到App Store.
任何协助/指示将不胜感激.
我想从命令行进行构建,我想知道如何使用选定的构建配置执行命令行编译器?
我知道有选项--no-config,它不会加载默认的dcc32.cfg文件,但我想设置我在项目中准备的构建配置.
我想运行类似的东西
dcc32.exe --some-option RELEASE Win32 PLATFORM
Run Code Online (Sandbox Code Playgroud)
是否有一些选择构建配置的选项?
谢谢
我已经按照这个教程,让我的应用程序有建立的DEBUG,ADHOC测试(我的测试用户),和RELEASE.除了我的应用内购买,一切都很好.
我Bundle ID的设置是:
com.mycompany.myproduct.debugcom.mycompany.myproduct.adhoccom.mycompany.myproduct(RELEASEID与此新设置之前的ID相同.
由于此方法Bundle ID根据构建进行更改,因此应用程序内购买与Bundle ID我运行应用程序时的特定内容相关联,DEBUG或者ADHOC当我调用时,我的产品标识符返回为无效requestProductsWithCompletionHandler.
我尝试添加新的应用程序内购买产品,Bundle ID如下所示:com.mycompany.myproduct.debug.iapname但由于应用程序内购买与单个捆绑ID相关联,因此不起作用.
我的问题是:为了完成我想要完成的任务,我是否必须在iTunes Connect中为每个新的Bundle ID创建2个新应用程序,然后为每个Build添加应用程序内购买产品组态?或者,还有另一种方法可以实现我想要完成的任务吗?
xcode in-app-purchase buildconfiguration ios bundle-identifier
ios ×3
xcode ×2
agent ×1
agents ×1
android ×1
build ×1
c ×1
c++ ×1
clion ×1
cmake ×1
cocoa-touch ×1
code-signing ×1
delphi ×1
delphi-xe2 ×1
kotlin ×1
swift ×1
teamcity ×1
testing ×1
unit-testing ×1
xcode7 ×1