gpt4 book ai didi

cmake - cmake中是否有用于模块开发的交互式shell?

转载 作者:行者123 更新时间:2023-12-01 07:29:07 25 4
gpt4 key购买 nike

CMake 很棒,尤其是有很多模块 (FindOOXX)。但是,当涉及到编写一个 FindXXX 模块时,您的项目所依赖的库 XXX,对于非 cmake 专家来说并不是那么容易处理。我有时会遇到一个不支持 CMake 的库,我喜欢为它做一个。我想知道在编写/测试 cmake 模块时是否有任何交互式 shell?

最佳答案

你在写 FindXXX对于项目“XXX”还是“XXX”是您要查找的项目的依赖项?如果是前者,您应该改为编写一个名为 XXX-config.cmake 的文件。 (或 XXXConfig.cmake )并将其安装到 find_package 的文档中提到的目录之一.一般来说,XXX-config.cmake文件用于预期由 CMake 找到的项目(并由项目本身安装)和 FindXXX.cmake文件适用于不支持 CMake 的项目(通常必须支持查找任何版本的 XXX)。

也就是说,对于 FindXXX.cmake , 通常你只需要几个 find_file (例如,对于标题),一些 find_library电话,甚至只是一个 pkg_check_module来自 FindPkgConfig.cmake其次是 find_package_handle_standard_args调用(使用 include(FindPackageHandleStandardArgs) 获取)。 FPHSA 使编写正确的查找模块变得轻而易举。

对于 XXX-config.cmake文件,我通常使用 configure_file生成两个版本:一个用于安装(包括您的 install(EXPORT) 文件),一个用于构建树(由 export() 调用生成)。使用它,可以准确设置其他有用的变量,例如“使用了哪个确切版本的 Boost”或“是否编译了 Python 支持”,以便依赖项目可以更好地了解依赖项的外观。

我最近还发现 CMake 附带了 CMakePackageConfigHelpers应该帮助制作这些文件的模块。看起来有相当多的文档。

关于cmake - cmake中是否有用于模块开发的交互式shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12614456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com