CMAKE_HOST_APPLE / CMAKE_HOST_UNIX / CMAKE_HOST_WIN32在哪里设置?

时间:2015-10-20 09:26:51

标签: build cmake cross-platform build-process

我已经开始深入挖掘,以便我能更好地理解CMake的内部工作原理。我一直在浏览Modules目录中的文件,以了解运行CMake时如何/为何/何时发生事情。

到目前为止,我无法确定CMAKE_HOST_APPLE / CMAKE_HOST_UNIX / CMAKE_HOST_WIN32变量的设置方式/位置。

任何人都可以启发我吗?

在相关的说明中,由于我不知道它们被启动/处理的顺序,我一直在以偶然的方式浏览模块文件。

是否有描述此流程的任何地方或者至少表明一个起点,以便我可以从那里找出其余部分?

1 个答案:

答案 0 :(得分:1)

这些变量在CMake的代码中设置,由平台相关的#ifdef检查包围,因此您可以说它们是在CMake本身的编译期间设置的。

我在查找有问题的源文件时遇到了一些困难,因为添加这些默认变量定义的代码最近才从cmMakefile::AddDefaultDefinitions()移到cmState::Snapshot::SetDefaultDefinitions()(请参阅此commit)。

以下是cmState.cxx的示例:

#if defined(__APPLE__)
  this->SetDefinition("APPLE", "1");
  this->SetDefinition("CMAKE_HOST_APPLE", "1");
#endif

有关CMake如何运作的更多信息,请参阅: