将CmakeList划分为子项目的正确方法
在一个将CmakeList划分为子项目的正确方法,cmake,Cmake,在一个cmake项目中,有几个相互依赖的库和几个可执行文件,并且有cmake计算库间依赖项,并生成非递归的makefiles,这样空编译速度会很快(至少对于unix来说) 这似乎过时了,在最近的cmake中不起作用,并且似乎生成递归生成文件。根据设计,生成递归生成文件是必要的: CMake实际上不会生成遵循目录结构的真正递归Make文件。它生成一个固定的3级makefile结构,其中每个级别都有一个定义的用途: Makefile:命令行界面入口点。将“make”调用映射为对2级makefile的
cmake
项目中,有几个相互依赖的库和几个可执行文件,并且有cmake
计算库间依赖项,并生成非递归的makefiles,这样空编译速度会很快(至少对于unix来说)
这似乎过时了,在最近的cmake中不起作用,并且似乎生成递归生成文件。根据设计,生成递归生成文件是必要的:
CMake实际上不会生成遵循目录结构的真正递归Make文件。它生成一个固定的3级makefile结构,其中每个级别都有一个定义的用途:
make-f CMakeFiles/Makefile2…
make-f CMakeFiles/$(target.dir/build.make…/depend
make-f CMakeFiles/$(target.dir/build.make…/build
计算自定义命令(以生成源文件),然后扫描源以查找隐式依赖项depend:
加载上一步的依赖项扫描结果。编译和链接李>build:
你所说的空编译是什么意思?为什么你坚持使用非递归的makefile?@kynan,空编译-当项目没有任何更改时发出
make
。我要求这将花费不到1秒的时间。使用recursive make甚至需要5秒钟,这在我的工作流程中是不可接受的。