当我从命令行运行时,以下工作正常,并且生成的Xcode项目的架构设置为我在此处传递的内容:
cmake ../src/ -GXcode -DCMAKE_OSX_ARCHITECTURES="armv7 arm64"
我想我会把这些信息放到CMakeLists中,如下所示:
set (CMAKE_OSX_ARCHITECTURES "armv7 arm64")
我已尝试将其移动到CMakeLists中的不同位置,但它没有任何区别,并且架构未按照命令行设置。
为什么命令行有效,但文件中的显式设置不起作用?
答案 0 :(得分:1)
CMAKE_OSX_ARCHITECTURES的文档明确说:
此变量的值应在第一个 project()或 enable_language()命令调用之前设置,因为它可能会影响工具链和标志的配置。它旨在由用户在本地设置,以创建构建树。
据我了解,工具链文件甚至在CMakeLists.txt
中的第一个命令之前执行。如果此文件检查变量,则除了从命令行设置变量之外别无选择。一些依赖于生成器的代码也在最开始执行。