cmake:如何调试坏标志

时间:2014-10-13 10:59:08

标签: cmake

我目前正在尝试使用新的iOS 8.0 SDK在Xcode6上使用全新的工具链Assimp编译中等大小的库。

与项目捆绑在一起的是各种脚本和Xcode项目,这些项目具有在iOS上构建的配置,但不幸的是,它们都没有开箱即用。

到目前为止,我所获得的最远的是使用构建脚本,该脚本使用cmake "Unix Makefiles"方法来组装静态库。其他方法包括使用cmake生成用于构建的Xcode项目。我试过这也无济于事,并且存储库中的项目附带的Xcodeproject(我后来在其中一个自述文件中被标记为已弃用)。

好的,这就是" Unix Makefiles" cmake脚本我已经能够生成一些静态库(在主CMakeLists.txt内手动强制静态lib生成之后),但是当它继续构建i386x86_64体系结构时对于iPhoneSimulator,它不断拉入iOS的标题,导致编译错误。

幸运的是,我跟着预感,发现assimp/code/CMakeFiles/assimp.dir/flags.make这是cmake生成的文件之一,并且看,整个cflags都在这里,一旦我删除了流氓头包含路径,{{ 1}}调用终于成功了,我有我的iPhoneSimulator静态库!

好的,我的问题基本上是在调试这些令人沮丧的cmake问题时我从哪里开始的。我与cmake的关系一直很紧张,因为cmake的复杂性和设计原则都没有对我有意义,而且cmake构建开箱即用的时候很少...它总是几乎工作的东西,但后来我花了几个小时用make进行调试,然后随意地查看生成的文件,这些文件当然都标有警告,不能编辑它们,因为它们是生成的文件

我意识到某些变量here可能与我的烦恼有关。但我不清楚如何调试这些变量。我在哪里打印出这些变量,以便找到哪个变量包含错误的值?例如,在最近的情况下,我有一个make VERBOSE=1标志在错误的地方出现。幸运的是,我能够使用涉及-I的各种大锤方法找到包含它的文件,但我并不接近实际修复构建配置以使该过程在未来不那么痛苦。

1 个答案:

答案 0 :(得分:1)

对于复杂的CMakeLists.txt文件,我发现variable_watch命令有时很有用(documentation here)。它并不容易,但为您提供了另一层次的信息。