Автоматизировать создание проектов XCode (.xcodeproj) - PullRequest
8 голосов
/ 05 февраля 2012

Как я могу автоматизировать создание проектов XCode в терминале?Если вы спрашиваете цель этого ... Я хочу создать сервис, который может автоматически создавать несколько разных проектов для разных пользователей.


ApplesScript

Я считаю, что это возможно сAppleScript, но это будет большой сток ресурсов, поскольку откроет XCode.Кроме того, это, скорее всего, займет много времени для создания нескольких проектов.

* Редактировать : использование AppleScript определенно не то, что я ищу с точки зрения эффективного решения.


CMake

Я изучил CMake, но я немного растерялся и запутался в документации, предоставленной для него ...

* Редактировать : я обнаружил следующее для CMakeLists.txt по адресу https://gist.github.com/740257.. Однако настройки необходимо изменить.

# See original post at /677959/kak-nastroit-cmake-dlya-sozdaniya-prilozheniya-dlya-iphone

cmake_minimum_required(VERSION 2.8)

cmake_policy(SET CMP0015 NEW)
cmake_policy(SET CMP0016 NEW)

project(test)
set(NAME test)

file(GLOB headers *.h)
file(GLOB sources *.cpp)

SET (SDKVER "4.1")
SET (DEVROOT "/Developer/Platforms/iPhoneOS.platform/Developer")
SET (SDKROOT "${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk")
SET (CMAKE_OSX_SYSROOT "${SDKROOT}")
SET (CMAKE_OSX_ARCHITECTURES "$(ARCHS_UNIVERSAL_IPHONE_OS)")

#Other 'CMAKE_OSX_ARCHITECTURES' iPhone/IOS option examples
#SET (CMAKE_OSX_ARCHITECTURES "armv6" "armv7")
#SET (CMAKE_OSX_ARCHITECTURES $(ARCHS_STANDARD_32_BIT))


set(CMAKE_CXX_FLAGS "-x objective-c++")
set(CMAKE_EXE_LINKER_FLAGS
    "-framework AudioToolbox -framework CoreGraphics -framework QuartzCore -framework UIKit"
)
link_directories(\${HOME}/\${SDKROOT}/lib)

set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.mycompany.\${PRODUCT_NAME:identifier}")
set(APP_TYPE MACOSX_BUNDLE)

add_executable(${NAME}
    ${APP_TYPE}
    ${headers}
    ${sources}
)

target_link_libraries(${NAME}
    # other libraries to link
)

# code signing
set_target_properties(${NAME} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: My Name")

Я создам собственное решение из этого файла.Например, я знаю, что версия SDK неверна.


Инструменты терминала

Существуют ли инструменты разработчика (поставляются с XCode 4.2.1) для терминала, которые я мог бы использоватьдля моей ситуации?


1 Ответ

10 голосов
/ 07 февраля 2012

Попробуйте https://github.com/CocoaPods/Xcodeproj. Это рубиновый драгоценный камень, который позволяет создавать и изменять проекты xcode. Вы можете использовать это в своих скриптах.

Пример использования:

~/code/temp % irb                                                                                                                                            18:17
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'xcodeproj'
=> true
irb(main):003:0> project = Xcodeproj::Project.new
=> #<Xcodeproj::Project:0x400dfc080 @plist={"archiveVersion"=>"1", "classes"=>{}, "objectVersion"=>"46", "objects"=>{"ED69A76A86EE4CBD96F96E4D"=>{"isa"=>"PBXGroup", "sourceTree"=>"<group>", "children"=>[]}, "17739AA030054D088B3B573E"=>{"attributes"=>{"LastUpgradeCheck"=>"0420"}, "compatibilityVersion"=>"Xcode 3.2", "developmentRegion"=>"English", "hasScannedForEncodings"=>"0", "knownRegions"=>["en"], "mainGroup"=>"ED69A76A86EE4CBD96F96E4D", "projectDirPath"=>"", "projectRoot"=>"", "targets"=>[], "isa"=>"PBXProject"}}, "rootObject"=>"17739AA030054D088B3B573E"} @objects=<PBXObjectList: ["#<PBXGroup UUID: `ED69A76A86EE4CBD96F96E4D', name: `'>", "#<PBXProject UUID: `17739AA030054D088B3B573E', name: `'>"]>>
irb(main):004:0> project.save_as('MyProject')
=> true

См. Документацию здесь: http://rubydoc.info/gems/xcodeproj/frames

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...