2012-03-15 28 views
1

我正在實現一個應用程序,它具有對命令行工具的依賴性。
這是因爲有一些預設要做。
命令行工具負責創建一個包含應用程序所需的所有初始信息的sqlite文件(很明顯,它只是一個將一些初始數據添加到應用程序的工具)。Xcode 4 - 初始設置的命令行目標

現在的問題是,在調試過程中一切正常,但如果我會做一個發佈版本,會發生一些錯誤。
第一個錯誤是

target specifies product type 'com.apple.product-type.tool', but there's no such 
product type for the 'iphoneos' platform" 

這是因爲我的主要應用有命令行工具作爲目標的依賴。 我解決了這個通過移除目標的依賴,並添加構建一個運行腳本階段:

#Build the initial setup target 
xcodebuild -target InitialCoreDataSetup -sdk macosx -configuration $CONFIGURATION 

#Run initializing data target to get current sqlite file 
cd "$CONFIGURATION_BUILD_DIR" 
cd .. 
cd "$CONFIGURATION" 
current_dir=$(pwd) 
./InitialCoreDataSetup "$current_dir" "$SRCROOT" "$CONFIGURATION" 

現在的問題是,我得到以下錯誤:

=== BUILD NATIVE TARGET InitialCoreDataSetup OF PROJECT XY WITH CONFIGURATION AdHoc  === 
Check dependencies 
SDK Configuration Error: no wrapper for product type @ 

我完全不知道如何解決這個問題。 有什麼建議嗎?

你如何爲你的應用程序提供一個初始的sqlite文件?

在此先感謝您的幫助!
編輯 此刻我的應用目標的構建階段有以下幾種: enter image description here

回答

1

BTW:我終於拿到了由以下行工作:

#Build the initial setup target 
export DYLD_FRAMEWORK_PATH="$SYMROOT/Debug" 
/usr/bin/env -i xcodebuild -target InitialCoreDataSetup -sdk "macosx" -configuration Debug OBJROOT="$SYMROOT/Debug" SYMROOT="$SYMROOT" 
echo "$SYMROOT/Debug" 
#Run initializing data target to get current sqlite file 
cd "$SYMROOT/Debug" 
./InitialCoreDataSetup "$SYMROOT/Debug" "$SRCROOT" "$CONFIGURATION" 

關鍵是要始終啓動initialCoreDataSetup在調試模式

+0

使用'/ usr/bin/env -i'調用xcodebuild解決了以下消息:'SDK配置錯誤:我沒有爲產品類型@包裝。謝謝 – Berik 2013-04-15 09:19:32

0

我會建議讓Xcode的做構建在這種情況下,因爲你應該能夠通過使用來產生sqllite文件構建規則以在其他構建規則運行之前運行腳本。

enter image description here

+0

好了,你可以指定一點點?我需要從我的主應用程序目標到InitialCoreDataSetup目標的目標依賴項,然後使用上面顯示的腳本(通過目標依賴項運行由xcode構建的目標)將構建規則添加到我的應用程序目標中? – Alexander 2012-03-15 13:38:37

+0

我認爲構建階段(就像你在答案中所做的那樣)比我建議的構建規則更好。當你這樣做時,你仍然遇到問題,並且有什麼問題? – Sam 2012-03-15 14:41:18