工作台的问题
在编译的基本概念里有提到一个管理器空间,iOS叫Workspace,Android叫Project
CMake本身使用Directory作为管理器空间的组织者,通过SubDirectory来组织不同的CMake项目
子目录
1 | ——root |
目录helloworld - CMakeLists.txt
“helloworld”这个顶级文件夹作为协调不同工程的工作空间
1 | # 指定CMake最小版本 |
目录main - CMakeLists.txt
“main”工程为主程序,其依赖两个子工程分别是 hello 和 world
1 | # 指定CMake最小版本 |
目录依赖库 - CMakeLists.txt
其中 “hello” 和 “world” 均为我们的依赖库,使用的CMakeLists.txt文件主体结构十分类似
1 | # 指定CMake最小版本 |
更多的源代码可以参考CMake07的源代码
目录并不在文件系统子目录内
在当前的举例中 hello 和 world 都在文件系统内实际为子目录,如果存在不为文件系统子目录的情况, 根据文档描述
1 | If binary_dir is not specified, the value of source_dir, before expanding any relative path, will be used (the typical usage). |
所以如果我们想使用相对路径的 source_dir,可以通过以下方式指定 binary_dir
1 | # 相当于 add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/hello ${CMAKE_CURRENT_BINARY_DIR}/hello) |