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

时间:2012-09-27 05:09:21

标签: cmake

CMake非常棒,特别是有很多模块(FindOOXX)。但是,当要编写一个FindXXX模块,一个项目所依赖的库XXX时,对于非cmake-expert来说,处理它并不容易。我有时会遇到一个没有CMake支持的图书馆,我喜欢为它制作一个。我想知道在编写/测试cmake模块时是否有任何交互式shell?

1 个答案:

答案 0 :(得分:1)

您是在为项目“XXX”撰写FindXXX还是在您尝试查找项目的依赖项“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)文件),另一个用于构建树(由{生成) {1}}来电)。使用它,可以准确地设置其他有用的变量,例如“使用Boost的确切版本”或“编译的Python支持”等内容,以便依赖项目可以更好地了解依赖项的外观。

我最近还发现CMake附带export()模块,该模块应该有助于制作这些文件。看起来有相当多的文档。