玖叶教程网

前端编程开发入门

CMake关于外部依赖库进行download的一些注意点

如果在CMake 3.11之前,所有的download都是在build time,包括ExternalProject_Add(这个暂时还没做实验)。如果是在build time进行,那么很多add_subdirectory会在configure time无法通过。如果你想在configure time进行download,可以通过 https://github.com/Crascit/DownloadProject 这个模块进行下载


3.11之后你可以用FetchContent,他最终在3.11进行了引入。他拥有如下几个特性:

  • 通过FetchContent_Declare(MyName)进行Data和Package的下载,你可以通过URLs, Git Repo等
  • 通过FetchContent_Properties(MyName)来得到MyName_*变量
  • 通过检查MyName_POPULATED变量来检测是否下载成功,否则就进行FetchContent_Populate(MyName)进行下载,如果此时还是一个package,就直接进行add_subdirectory("${MyName_SOURCE_DIR}" "${MyName_BINARY_DIR}")


比如我们直接看下面进行Catch2下载的例子:

这里我们进行了FetchContent_Declare的声明,在CMake 3.14之后我们可以直接通过FetchContent_MakeAvailable(catch)来一步到位,否则我们就需要


当然你可以自己写一个helper macro


通过这种方式,你就可以在你的CMakeLists.txt里使用Catch2了

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言