配置CMake以使用Xcode构建

时间:2013-03-29 16:35:29

标签: xcode4 cmake

我参与了为Windows,Linux和Mac OS X构建的大型跨平台项目的开发。该软件的构建使用CMake进行配置。

CMake脚本设计用于在Windows上成功配置Visual Studio,而Makefiles目前用于在Linux和Mac OS X上构建。

到目前为止,该项目的所有开发工作都是针对在Windows上工作的人员以及Linux上的一些工作完成的。我有兴趣在运行Mac OS X 10.7的Macintosh上使用Xcode 4.6进行项目开发,我遇到了问题,因为CMake文件似乎没有为该开发环境正确配置。

对于非Windows平台,已经编写了许多自定义命令来尝试配置诸如复制所需文件或设置某些操作所需的环境,例如在构建过程中运行单元测试。

似乎因为Xcode是一个集成开发环境,因此Visual Studio有一个构建配置的概念,当软件在包含该配置概念的目录路径中构建输出文件时(即许多构建文件结束)在一个以Debug,Release等名称命名的文件夹结尾的路径中。)

CMake应该支持处理这个构建配置概念,并且所使用的机制适用于Visual Studio。这似乎对Xcode没有用。例如,我们的构建工程师有设计CMake脚本,因此对于Windows,使用CMAKE_CFG_INTDIR值配置了许多路径和诸如此类的东西,这有助于限定构建配置。

使用CMAKE_CFG_INTDIR对Xcode不起作用,因为Macintosh的脚本是用Makefile编写的,它们实际上没有构建配置概念。在用于配置事物的自定义命令中使用CMAKE_CFG_INTDIR在Macintosh上失败,因为值已解析为$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)。运行自定义命令时不会定义此值,因此未正确设置值并且构建操作失败。

目前还不清楚需要什么,以便系统可以成功配置Xcode。到目前为止,在互联网上搜索并没有深入了解应该使用什么来确保构建配置能够成功。哪些资源可用于帮助确定如何配置此项目以使用Xcode构建?

1 个答案:

答案 0 :(得分:0)

如果您正在讨论使用add_custom_command设置的自定义命令,那么您应该首选“生成器表达式”以避免有关每个配置构建目录的问题。来自add_custom_command的文档:

  

COMMAND的参数可能使用“生成器表达式”,语法为“$<...>”。在构建系统生成期间评估生成器表达式,以生成特定于每个构建配置的信息。

例如,名为“MyExe”的目标的构建目录可以称为$<TARGET_FILE_DIR:MyExe>

生成器表达式在几个CMake命令中可用,而不仅仅是add_custom_command

如果您有更具体的问题,可能值得进一步询问相关细节。