是否可以自动生成Xcode项目?

6

简单的问题。是否有任何工具可以从命令行生成Xcode项目?我们使用SCons构建我们的跨平台应用程序,但它不支持内在的Xcode项目生成。我们希望避免手动创建项目,因为这将涉及维护多个文件列表。

8个回答

5

看看CMake。你可以自动从中生成XCode项目。我在StackOverflow上找到了一个关于其使用的早期问题here。要让它生成XCode项目,你可以这样使用:

CMake -G xcode

是的,我们正在尝试避免将项目转换为CMake... 我猜我们可以从SCons生成一个CMakeLists.txt文件,或者也许不需要 ;) - Nick Bolton

3

2

为了让任何看到这个问题的人受益,我已经将一个用于生成SCons Xcode项目文件的Xcode 项目文件生成器上传到Bitbucket。


+1 - 有趣。这个能不能与Homebrew兼容呢?如果它可以选择性地从.swift文件开始,那就更好了。 - Tommie C.
@TommieC。生成器完全不关心源文件内容(因此Swift源代码将正常工作)。生成器有意构建运行SCons的外部构建系统目标,因此构建不会偏离SConstruct文件中指定的内容。我认为SCons本身不支持Swift,但如果您精通Python,可以轻松编写一个生成器。至于Homebrew支持,我不知道您想要什么;安装生成器所需的全部就是复制一个文件 - 我看不出brew如何有所帮助。 - al45tair
谢谢你提供这个信息~我是一个不偏不倚的程序员,所以我会看看Python的选项。Brew包可以使代码“受控”,并使更新透明化,同时可能增加用户群的范围。 - Tommie C.
@TommieC。我想你可以制作一个brew包,将其安装在系统范围内的一个site_scons目录中,但由于调用必须从SConstruct文件中进行,我想个别项目维护者会想要创建一个项目级别的site_scons并将其放置在那里。brew对此没有帮助,而全局安装只会使它成为每个人都必须安装的构建依赖项;最好是将工具与相关源代码一起包含(这也意味着没有版本问题,不像autotools有时会发生的情况)。 - al45tair

1

Qt工具链中的qmake可以生成Xcode项目。您至少可以在这里(LGPL)下载并查看其源代码。


1

我认为你的问题应该是“有没有一种方法可以从SCons生成XCode项目?”。我猜想,通过你的提问和阅读其他人的回答,答案是否定的。

SCons people应该更清楚。我认为如果你能贡献一个SCons Xcode项目生成器,他们会很高兴。

同时,你可以选择切换到CMake或手动创建你的XCode项目,这可能是最好的实用解决方案,前提是你的源代码树组织良好。


0
一个很有前途的替代CMake并且可以生成Xcode项目的工具是xmake。我还没有尝试过,但从文档上看起来不错。
安装xmake,创建一个简单的项目文件(xmake.lua):
target("test")
    add_files("src/*.cpp")

然后你可以选择使用命令行进行构建:

xmake

或者创建一个Xcode项目:

xmake project -k xcode

请注意,目前xmake似乎会调用CMake生成Xcode项目,尽管他们表示计划在某个时候添加本地的Xcode项目生成。

0

你可以使用基于Python的构建系统waf来生成XCode项目。你需要下载和安装带有xcode6扩展的waf

$ curl -o waf-1.9.7.tar.bz2 https://waf.io/waf-1.9.7.tar.bz2
$ tar xjvf waf-1.9.7.tar.bz2
$ cd waf-1.9.7
$ ./waf-light --tools=xcode6

这将创建一个可执行的waf,它可以构建您的项目。您需要配置如何在名为wscript的文件中生成XCode项目,该文件应位于您的项目文件夹中。 wscript文件使用Python语法。这里是一个示例,展示了如何配置您的项目:

def configure(conf):

    # Use environment variables to set default project configuration
    # settings
    conf.env.FRAMEWORK_VERSION = '1.0'
    conf.env.ARCHS = 'x86_64'

    # This must be called at the end of configure()
    conf.load('xcode6')

# This will build a XCode project with one target with type 'framework'
def build(bld):
    bld.load('xcode6')
    bld.framework(
        includes='include',

        # Specify source files.
        # This will become the groups (folders) inside XCode.
        # Pass a dictionary to group by name. Use a list to add everything in one
        source_files={
            'MyLibSource': bld.path.ant_glob('src/MyLib/*.cpp|*.m|*.mm'),
            'Include': bld.path.ant_glob(incl=['include/MyLib/*.h', 'include'], dir=True)
        },

        # export_headers will put the files in the
        # 'Header Build Phase' in Xcode - i.e tell XCode to ship them with your .framework
        export_headers=bld.path.ant_glob(incl=['include/MyLib/*.h', 'include/MyLib/SupportLib'], dir=True),
        target='MyLib',
        install='~/Library/Frameworks'
    )

有许多设置可用于为您的项目配置它。

然后,要实际生成XCode项目,请cd进入包含wscript的项目文件夹,并运行您的waf可执行文件,如下所示:

$ ./waf configure xcode6

但是当我运行 ./waf build 命令时,Python 报错:AttributeError: 'BuildContext' object has no attribute 'framework'。 - mmmmmm
尝试写成"./waf xcode6"而不是"build"。并且记得先运行配置,即"./waf configure"。@Mark。希望能帮到你! - mrmclovin

-2

你可以使用Automator为你生成它们。

我检查了一下,没有预先构建的操作。 因此,您需要使用Automator记录您的操作来完成此操作。


1
刚刚试用了Automator,我不确定它是否符合我的需求,因为它使用GUI执行操作。我更倾向于基于命令的方法...无论如何还是谢谢。 - Nick Bolton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接