{"version":1,"pages":[{"id":"-LmKrgMvqMGLuvpLRBcC","title":"Introduction","pathname":"/cmake-cookbook","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LmKs6a20jxrR50puxq3","title":"前言","pathname":"/cmake-cookbook/preface-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LmKs6a9dwAbtERzJUpZ","title":"第0章 配置环境","pathname":"/cmake-cookbook/0.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LmKs6aAYxyoAYXn_ASs","title":"0.1 获取代码","pathname":"/cmake-cookbook/0.0-chinese/0.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第0章 配置环境"}]},{"id":"-LmKs6aBF0vSxSu0IHHa","title":"0.2 Docker镜像","pathname":"/cmake-cookbook/0.0-chinese/0.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第0章 配置环境"}]},{"id":"-LmKs6aCIrykHIvaC4K_","title":"0.3 安装必要的软件","pathname":"/cmake-cookbook/0.0-chinese/0.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第0章 配置环境"}]},{"id":"-LmKs6aDI78G1PlJRK6n","title":"0.4 测试环境","pathname":"/cmake-cookbook/0.0-chinese/0.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第0章 配置环境"}]},{"id":"-LmKs6aE1TWdWkBCPr2K","title":"0.5 上报问题并提出改进建议","pathname":"/cmake-cookbook/0.0-chinese/0.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第0章 配置环境"}]},{"id":"-LmKs6aFJGxY3tSy9QU0","title":"第1章 从可执行文件到库","pathname":"/cmake-cookbook/1.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LmNlRSotLXFUNA6B3Ap","title":"1.1 将单个源文件编译为可执行文件","pathname":"/cmake-cookbook/1.0-chinese/1.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmKs6aH_R0Z8N76oqnD","title":"1.2 切换生成器","pathname":"/cmake-cookbook/1.0-chinese/1.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmTXUWuvUuYYIukdVRr","title":"1.3 构建和链接静态库和动态库","pathname":"/cmake-cookbook/1.0-chinese/1.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmTrs3jTxyqvF9XnkPG","title":"1.4 用条件句控制编译","pathname":"/cmake-cookbook/1.0-chinese/1.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmU0C1q6h3zZ3mwTPUp","title":"1.5 向用户显示选项","pathname":"/cmake-cookbook/1.0-chinese/1.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmUgqPcxI1_yijL-BHG","title":"1.6 指定编译器","pathname":"/cmake-cookbook/1.0-chinese/1.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmUhVwlBvs7r-d8fMpg","title":"1.7 切换构建类型","pathname":"/cmake-cookbook/1.0-chinese/1.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmV0nncCeew0paT6ABm","title":"1.8 设置编译器选项","pathname":"/cmake-cookbook/1.0-chinese/1.8-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmV1SNBXC57McdMJOyR","title":"1.9 为语言设定标准","pathname":"/cmake-cookbook/1.0-chinese/1.9-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmXkFWefYydG1Vn8Voh","title":"1.10 使用控制流","pathname":"/cmake-cookbook/1.0-chinese/1.10-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第1章 从可执行文件到库"}]},{"id":"-LmYokNeUj235n7hupkW","title":"第2章 检测环境","pathname":"/cmake-cookbook/2.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LmYokNfrOmO9F14ui2V","title":"2.1 检测操作系统","pathname":"/cmake-cookbook/2.0-chinese/2.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第2章 检测环境"}]},{"id":"-LmYyTQb0MJNr_LojT4Z","title":"2.2 处理与平台相关的源代码","pathname":"/cmake-cookbook/2.0-chinese/2.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第2章 检测环境"}]},{"id":"-LmZ7VzNwNRILI5UlRwK","title":"2.3 处理与编译器相关的源代码","pathname":"/cmake-cookbook/2.0-chinese/2.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第2章 检测环境"}]},{"id":"-LmcEI4rz-GOM2Miw4oc","title":"2.4 检测处理器体系结构","pathname":"/cmake-cookbook/2.0-chinese/2.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第2章 检测环境"}]},{"id":"-LmYyTQeCYxHATAIzk6o","title":"2.5 检测处理器指令集","pathname":"/cmake-cookbook/2.0-chinese/2.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第2章 检测环境"}]},{"id":"-LmYyTQfzWwsbUVBBqQF","title":"2.6 为Eigen库使能向量化","pathname":"/cmake-cookbook/2.0-chinese/2.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第2章 检测环境"}]},{"id":"-LmcNLhBsV-UHOjCLwav","title":"第3章 检测外部库和程序","pathname":"/cmake-cookbook/3.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LmcNLhC-ajNlPSCKD8U","title":"3.1 检测Python解释器","pathname":"/cmake-cookbook/3.0-chinese/3.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-LmeRQv1DhhVED_hcaF-","title":"3.2 检测Python库","pathname":"/cmake-cookbook/3.0-chinese/3.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-LmjETJWlYMKKVXl3ZvO","title":"3.3 检测Python模块和包","pathname":"/cmake-cookbook/3.0-chinese/3.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-LmtdngJa029STp743Zx","title":"3.4 检测BLAS和LAPACK数学库","pathname":"/cmake-cookbook/3.0-chinese/3.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-Ln2WK_NUZLHX3DeP88Y","title":"3.5 检测OpenMP的并行环境","pathname":"/cmake-cookbook/3.0-chinese/3.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-LmjETJZUAJ-R08eZTWg","title":"3.6 检测MPI的并行环境","pathname":"/cmake-cookbook/3.0-chinese/3.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-Ln2iGVHF7T4b-2dRZwv","title":"3.7 检测Eigen库","pathname":"/cmake-cookbook/3.0-chinese/3.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-Ln2nqz_ljgwK811eD02","title":"3.8 检测Boost库","pathname":"/cmake-cookbook/3.0-chinese/3.8-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-Ln2zVjeJPdPNBmzCYJv","title":"3.9 检测外部库:Ⅰ. 使用pkg-config","pathname":"/cmake-cookbook/3.0-chinese/3.9-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-Ln39vNErDYQUm-c6Sqk","title":"3.10 检测外部库:Ⅱ. 自定义find模块","pathname":"/cmake-cookbook/3.0-chinese/3.10-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第3章 检测外部库和程序"}]},{"id":"-Ln74zncu7olTrHDIUTG","title":"第4章 创建和运行测试","pathname":"/cmake-cookbook/4.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-Ln74zndKKRCDm3GQ-i8","title":"4.1 创建一个简单的单元测试","pathname":"/cmake-cookbook/4.0-chinese/4.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln7p9MgWofJ86fqVMqW","title":"4.2 使用Catch2库进行单元测试","pathname":"/cmake-cookbook/4.0-chinese/4.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln7rD3c-GkytXRRJ4rA","title":"4.3 使用Google Test库进行单元测试","pathname":"/cmake-cookbook/4.0-chinese/4.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln7rYA_nTl1mCdsiPTJ","title":"4.4 使用Boost Test进行单元测试","pathname":"/cmake-cookbook/4.0-chinese/4.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln7zXzoipSODYTyKF9o","title":"4.5 使用动态分析来检测内存缺陷","pathname":"/cmake-cookbook/4.0-chinese/4.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln80F-VVfzqKuKtbLe-","title":"4.6 预期测试失败","pathname":"/cmake-cookbook/4.0-chinese/4.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln82rZS14HOhCREhVjS","title":"4.7 使用超时测试运行时间过长的测试","pathname":"/cmake-cookbook/4.0-chinese/4.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln831iF79E1i-77Ypw4","title":"4.8 并行测试","pathname":"/cmake-cookbook/4.0-chinese/4.8-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Ln8702GMXlZS0VQDfn4","title":"4.9 运行测试子集","pathname":"/cmake-cookbook/4.0-chinese/4.9-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-LnDPC9SJ04xSd30t8l5","title":"4.10 使用测试固件","pathname":"/cmake-cookbook/4.0-chinese/4.10-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第4章 创建和运行测试"}]},{"id":"-Lnam4XQzYi32bxOgiyA","title":"第5章 配置时和构建时的操作","pathname":"/cmake-cookbook/5.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-Lnam4XRnNEpr8lC6WgR","title":"5.1 使用平台无关的文件操作","pathname":"/cmake-cookbook/5.0-chinese/5.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LnardiP62gP7lUaOr3h","title":"5.2 配置时运行自定义命令","pathname":"/cmake-cookbook/5.0-chinese/5.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LnbtfwKciSnegBfJzT5","title":"5.3 构建时运行自定义命令:Ⅰ. 使用add_custom_command","pathname":"/cmake-cookbook/5.0-chinese/5.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LnbuZ4fQameIzJzL5qQ","title":"5.4 构建时运行自定义命令:Ⅱ. 使用add_custom_target","pathname":"/cmake-cookbook/5.0-chinese/5.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-Lnc07vYJ78JNDMx_P1F","title":"5.5 构建时为特定目标运行自定义命令","pathname":"/cmake-cookbook/5.0-chinese/5.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LngT65jaTh_Cljs2sue","title":"5.6 探究编译和链接命令","pathname":"/cmake-cookbook/5.0-chinese/5.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LngXxCUGRIJWwoy5Typ","title":"5.7 探究编译器标志命令","pathname":"/cmake-cookbook/5.0-chinese/5.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LngdcvOowYIqzjFPvvg","title":"5.8 探究可执行命令","pathname":"/cmake-cookbook/5.0-chinese/5.8-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LngpNDBfIGoQwJDEZBR","title":"5.9 使用生成器表达式微调配置和编译","pathname":"/cmake-cookbook/5.0-chinese/5.9-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第5章 配置时和构建时的操作"}]},{"id":"-LnrZxQavqocoafpYEXC","title":"第6章 生成源码","pathname":"/cmake-cookbook/6.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LnrZxQbnOQsdiwoWEPr","title":"6.1 配置时生成源码","pathname":"/cmake-cookbook/6.0-chinese/6.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-Lnwc3lCw1GL3aU7O191","title":"6.2 使用Python在配置时生成源码","pathname":"/cmake-cookbook/6.0-chinese/6.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-LnwgjObgxE4OQfhnlLG","title":"6.3 构建时使用Python生成源码","pathname":"/cmake-cookbook/6.0-chinese/6.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-LnwjHKEMfh4ZRczE_BE","title":"6.4 记录项目版本信息以便报告","pathname":"/cmake-cookbook/6.0-chinese/6.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-Lo0kp8n34loWdLfIMDn","title":"6.5 从文件中记录项目版本","pathname":"/cmake-cookbook/6.0-chinese/6.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-Lo8PUzKE4BgSUMpxB85","title":"6.6 配置时记录Git Hash值","pathname":"/cmake-cookbook/6.0-chinese/6.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-LnwjHKHAEcS6CStVn3L","title":"6.7 构建时记录Git Hash值","pathname":"/cmake-cookbook/6.0-chinese/6.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第6章 生成源码"}]},{"id":"-Lo8WRYhol53OmsmRtme","title":"第7章 构建项目","pathname":"/cmake-cookbook/7.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-Lo8WRYit1WqypL8K1RG","title":"7.1 使用函数和宏重用代码","pathname":"/cmake-cookbook/7.0-chinese/7.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo8h07PMNCIaKsPM6oE","title":"7.2 将CMake源代码分成模块","pathname":"/cmake-cookbook/7.0-chinese/7.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo8l9OZzlEcJRHBO9fS","title":"7.3 编写函数来测试和设置编译器标志","pathname":"/cmake-cookbook/7.0-chinese/7.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo8p7J0tk3-xlOfWuyw","title":"7.4 用指定参数定义函数或宏","pathname":"/cmake-cookbook/7.0-chinese/7.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo8rj5nbWl2oAA_KfNR","title":"7.5 重新定义函数和宏","pathname":"/cmake-cookbook/7.0-chinese/7.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo91PNgMoaFtPg5B6-C","title":"7.6 使用废弃函数、宏和变量","pathname":"/cmake-cookbook/7.0-chinese/7.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo94KWH_R0qqW89GH-j","title":"7.7 add_subdirectory的限定范围","pathname":"/cmake-cookbook/7.0-chinese/7.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-Lo9BvoaOos_krUX6pA5","title":"7.8 使用target_sources避免全局变量","pathname":"/cmake-cookbook/7.0-chinese/7.8-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-LoApo5k9Mq5mVmxRbrO","title":"7.9 组织Fortran项目","pathname":"/cmake-cookbook/7.0-chinese/7.9-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第7章 构建项目"}]},{"id":"-LoD_onv_KxHuJho9yh1","title":"第8章 超级构建模式","pathname":"/cmake-cookbook/8.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LoD_onw_LVu5gmhkvxF","title":"8.1 使用超级构建模式","pathname":"/cmake-cookbook/8.0-chinese/8.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第8章 超级构建模式"}]},{"id":"-LoDqcAW-NZwcvzW__CX","title":"8.2 使用超级构建管理依赖项:Ⅰ.Boost库","pathname":"/cmake-cookbook/8.0-chinese/8.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第8章 超级构建模式"}]},{"id":"-LoDyB64MeX38uY5shsw","title":"8.3 使用超级构建管理依赖项:Ⅱ.FFTW库","pathname":"/cmake-cookbook/8.0-chinese/8.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第8章 超级构建模式"}]},{"id":"-LoE29kjdV403fSNw1eH","title":"8.4 使用超级构建管理依赖项:Ⅲ.Google Test框架","pathname":"/cmake-cookbook/8.0-chinese/8.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第8章 超级构建模式"}]},{"id":"-LoEku-12JV5Z1i4N5ug","title":"8.5 使用超级构建支持项目","pathname":"/cmake-cookbook/8.0-chinese/8.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第8章 超级构建模式"}]},{"id":"-LoFsfEB1nofgK2niQvQ","title":"第9章 语言混合项目","pathname":"/cmake-cookbook/9.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LoFsfEC-m31Xo9T_8Em","title":"9.1 使用C/C++库构建Fortran项目","pathname":"/cmake-cookbook/9.0-chinese/9.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第9章 语言混合项目"}]},{"id":"-LoG0eQyGHa8kssnUjSh","title":"9.2 使用Fortran库构建C/C++项目","pathname":"/cmake-cookbook/9.0-chinese/9.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第9章 语言混合项目"}]},{"id":"-LoViYvxASKvpjlEZkes","title":"9.3 使用Cython构建C++和Python项目","pathname":"/cmake-cookbook/9.0-chinese/9.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第9章 语言混合项目"}]},{"id":"-LoVq2PAdGjaXgiQg0QD","title":"9.4 使用Boost.Python构建C++和Python项目","pathname":"/cmake-cookbook/9.0-chinese/9.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第9章 语言混合项目"}]},{"id":"-LocZTOpqXBThrCHTmNa","title":"9.5 使用pybind11构建C++和Python项目","pathname":"/cmake-cookbook/9.0-chinese/9.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第9章 语言混合项目"}]},{"id":"-LochBLlAC313SwtWUuJ","title":"9.6 使用Python CFFI混合C，C++，Fortran和Python","pathname":"/cmake-cookbook/9.0-chinese/9.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第9章 语言混合项目"}]},{"id":"-Loez-p_b1HOuTcszaIO","title":"第10章 编写安装程序","pathname":"/cmake-cookbook/10.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-Loez-padiqhM6TVMDcd","title":"10.1 安装项目","pathname":"/cmake-cookbook/10.0-chinese/10.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第10章 编写安装程序"}]},{"id":"-LofZMWfeLS3FUj8wZ-G","title":"10.2 生成输出头文件","pathname":"/cmake-cookbook/10.0-chinese/10.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第10章 编写安装程序"}]},{"id":"-Lohgz3_zRI9Kr12zgOc","title":"10.3 输出目标","pathname":"/cmake-cookbook/10.0-chinese/10.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第10章 编写安装程序"}]},{"id":"-LoiGVDC6DYLXLxzP1qN","title":"10.4 安装超级构建","pathname":"/cmake-cookbook/10.0-chinese/10.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第10章 编写安装程序"}]},{"id":"-LojfqnQhgG4cb0BhCtI","title":"第11章 打包项目","pathname":"/cmake-cookbook/11.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LojfqnRyqirKAwP4cQ5","title":"11.1 生成源代码和二进制包","pathname":"/cmake-cookbook/11.0-chinese/11.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第11章 打包项目"}]},{"id":"-Lp8max1QUwE_gxbXlIp","title":"11.2 通过PyPI发布使用CMake/pybind11构建的C++/Python项目","pathname":"/cmake-cookbook/11.0-chinese/11.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第11章 打包项目"}]},{"id":"-LpHFbXGm6Hw5E9vMimI","title":"11.3 通过PyPI发布使用CMake/CFFI构建C/Fortran/Python项目","pathname":"/cmake-cookbook/11.0-chinese/11.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第11章 打包项目"}]},{"id":"-LpHQnFTHuCQe61ghICI","title":"11.4 以Conda包的形式发布一个简单的项目","pathname":"/cmake-cookbook/11.0-chinese/11.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第11章 打包项目"}]},{"id":"-LpHZgkY_ZJXiBfUvSf8","title":"11.5 将Conda包作为依赖项发布给项目","pathname":"/cmake-cookbook/11.0-chinese/11.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第11章 打包项目"}]},{"id":"-LpHf9BcQFv-FW59OUNv","title":"第12章 构建文档","pathname":"/cmake-cookbook/12.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LpHf9BdkkGEgG8yuFfs","title":"12.1 使用Doxygen构建文档","pathname":"/cmake-cookbook/12.0-chinese/12.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第12章 构建文档"}]},{"id":"-LpHqI0kRiGifm8XrLVK","title":"12.2 使用Sphinx构建文档","pathname":"/cmake-cookbook/12.0-chinese/12.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第12章 构建文档"}]},{"id":"-LpHrmsVmqQONIYh2dkg","title":"12.3 结合Doxygen和Sphinx","pathname":"/cmake-cookbook/12.0-chinese/12.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第12章 构建文档"}]},{"id":"-LpT8_VVQ98ussTSG23T","title":"第13章 选择生成器和交叉编译","pathname":"/cmake-cookbook/13.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LpT8_VW3cTTM4L6rdEC","title":"13.1 使用CMake构建Visual Studio 2017项目","pathname":"/cmake-cookbook/13.0-chinese/13.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第13章 选择生成器和交叉编译"}]},{"id":"-LpTFyg4Bs80LOEXQpey","title":"13.2 交叉编译hello world示例","pathname":"/cmake-cookbook/13.0-chinese/13.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第13章 选择生成器和交叉编译"}]},{"id":"-LpczAYrOEITnb1p2teD","title":"13.3 使用OpenMP并行化交叉编译Windows二进制文件","pathname":"/cmake-cookbook/13.0-chinese/13.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第13章 选择生成器和交叉编译"}]},{"id":"-LpqAM-g75P1pe5ntMAi","title":"第14章 测试面板","pathname":"/cmake-cookbook/14.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-LpqL9Zv1MLOHH3U0-3N","title":"14.1 将测试部署到CDash","pathname":"/cmake-cookbook/14.0-chinese/14.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第14章 测试面板"}]},{"id":"-LpqTa4qUdbLa-UR-Gf8","title":"14.2 CDash显示测试覆盖率","pathname":"/cmake-cookbook/14.0-chinese/14.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第14章 测试面板"}]},{"id":"-LpqYNS0cu-0mhNCXYTY","title":"14.3 使用AddressSanifier向CDash报告内存缺陷","pathname":"/cmake-cookbook/14.0-chinese/14.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第14章 测试面板"}]},{"id":"-Lpra7ZzmX1640PKdsY7","title":"14.4 使用ThreadSaniiser向CDash报告数据争用","pathname":"/cmake-cookbook/14.0-chinese/14.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第14章 测试面板"}]},{"id":"-Lprlk2wi-UoqbuTceN6","title":"第15章 使用CMake构建已有项目","pathname":"/cmake-cookbook/15.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-Lprlk2xSG10AEGJ_5By","title":"15.1 如何开始迁移项目","pathname":"/cmake-cookbook/15.0-chinese/15.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-LmKs6aGewaWboW3ObZ4","title":"15.2 生成文件并编写平台检查","pathname":"/cmake-cookbook/15.0-chinese/15.2-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk2zXUiG3_Jtv44C","title":"15.3 检测所需的链接和依赖关系","pathname":"/cmake-cookbook/15.0-chinese/15.3-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk3-D8jQFhnMlBv_","title":"15.4 复制编译标志","pathname":"/cmake-cookbook/15.0-chinese/15.4-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk30CTmOfgGZSMc6","title":"15.5 移植测试","pathname":"/cmake-cookbook/15.0-chinese/15.5-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk31UUycc76LCeLm","title":"15.6 移植安装目标","pathname":"/cmake-cookbook/15.0-chinese/15.6-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk32wc2C4z2W_Gfx","title":"15.7 进一步迁移的措施","pathname":"/cmake-cookbook/15.0-chinese/15.7-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk33OeOz9wDB6cwy","title":"15.8 项目转换为CMake的常见问题","pathname":"/cmake-cookbook/15.0-chinese/15.8-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第15章 使用CMake构建已有项目"}]},{"id":"-Lprlk3486-8w6DVK8Y5","title":"第16章 可能感兴趣的书","pathname":"/cmake-cookbook/16.0-chinese","siteSpaceId":"sitesp_sXFq2","description":""},{"id":"-Lprlk35TpOL2gjknXzs","title":"16.1 留下评论——让其他读者知道你的想法","pathname":"/cmake-cookbook/16.0-chinese/16.1-chinese","siteSpaceId":"sitesp_sXFq2","description":"","breadcrumbs":[{"label":"第16章 可能感兴趣的书"}]}]}