将CMakeLists划分为子项目的正确方法

时间:2011-07-07 09:45:27

标签: cmake

在单个cmake项目中拥有一些相互依赖的库和一些可执行文件的惯用方法是什么,并且cmake计算馆际依赖关系,并生成非递归的makefile,以便空编译会很快(至少对于unix)。

这个example似乎过时了,在最近的cmake中并没有真正起作用,似乎生成了递归的makefile。

1 个答案:

答案 0 :(得分:1)

根据CMake FAQ生成的递归Makefile是必要的设计:

  

CMake实际上并不生成遵循目录结构的真正递归的makefile。它生成一个固定的3级makefile结构,其中每个级别都有一个定义的目的:

     
      
  1. Makefile:命令行界面入口点。将“make”调用映射到对2级makefile的调用:   
        
    • make -f CMakeFiles/Makefile2 ...
    •   
  2.   
  3. CMakeFiles / Makefile2:目标间依赖关系。以依赖顺序评估目标,为每个目标调用3级中的依赖和构建步骤:   
        
    • make -f CMakeFiles/$(target).dir/build.make .../depend
    •   
    • make -f CMakeFiles/$(target).dir/build.make .../build
    •   
  4.   
  5. CMakeFiles / .dir / build.make:文件级依赖关系和规则:   
        
    • depend:评估自定义命令(生成生成源文件),然后扫描源以获取隐式依赖项。
    •   
    • build:加载上一步的依赖项扫描结果。编译和链接。
    •   
  6.