0

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

CMake 脚本旨在为 Windows 上的 Visual Studio 成功配置,Makefile 目前用于在 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 的脚本是用 Makefiles 编写的,而 Makefiles 并没有真正的构建配置概念。在用于配置事物的自定义命令中使用 CMAKE_CFG_INTDIR 在 Macintosh 上失败,因为该值解析为 $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)。运行自定义命令时未定义此值,因此未正确设置值并且构建操作失败。

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

4

1 回答 1

0

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

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

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

生成器表达式在一些 CMake 命令中可用,而不仅仅是add_custom_command.

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

于 2013-03-30T01:04:38.820 回答