【发布时间】:2011-01-15 05:46:30
【问题描述】:
我刚刚切换到 CMake。然而发现它非常有用并实现了一些简单的应用程序和库。 在某处我读到可以从 cmake 脚本中查询 git 以签出存储库。
我想用我的 Find(package).cmake 检查一个包是否存在 如果它不存在,我想启动一个结帐并将新目录作为子目录添加到 cmake 脚本中。
这样我的所有依赖项都会自动安装。 有人知道如何实现这个想法吗?谢谢!
再见,亚瑟
【问题讨论】:
我刚刚切换到 CMake。然而发现它非常有用并实现了一些简单的应用程序和库。 在某处我读到可以从 cmake 脚本中查询 git 以签出存储库。
我想用我的 Find(package).cmake 检查一个包是否存在 如果它不存在,我想启动一个结帐并将新目录作为子目录添加到 cmake 脚本中。
这样我的所有依赖项都会自动安装。 有人知道如何实现这个想法吗?谢谢!
再见,亚瑟
【问题讨论】:
您可能正在考虑在 CMake 2.8 中添加的 ExternalProject 模块。它记录在http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:ExternalProject,并在http://www.kitware.com/products/archive/kitware_quarterly1009.pdf 的第14 页对其进行了介绍。它允许您签出/下载项目并自动构建它。
【讨论】:
我会尝试使用 find_package 查找包,如果未设置 package_FOUND 变量,您必须使用 execute_process 手动调用 git。如果源代码已经包含 CMakeLists.txt,只需使用 add_subdirectory 添加它,否则您必须编写自己的 CMake 指令来首先构建该包。
【讨论】: