排除外部项目子目录

时间:2015-09-01 04:37:37

标签: cmake

我正在使用Cmake创建项目,并且我使用ExternalProject来包含依赖项。该依赖项有自己的CMakeLists.txt,在CMakeLists.txt内部,它包含两个使用add_subdirectory的目录,这些目录是示例,我想删除它们。

例如:

ExternalProject_Add(
  foobar
  URL url_goes_here
  PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/foobar
  INSTALL_COMMAND ""
)

CMakeLists.txt的{​​{1}}内,它有foobaradd_subdirectory(example1)

我想从构建中删除这两个例子。

1 个答案:

答案 0 :(得分:0)

我首先检查foobar是否已经有一个标志来禁用这些示例。您可以使用CMAKE_ARGS设置标志。

否则,您可以使用PATCH_COMMAND从foobar中删除示例。

更新1,如何修补:您可以使用多种可能性之一

  • 创建补丁文件并将其应用于patch -p1 < disable_examples.patch
  • 运行sed脚本删除add_subdirectory行sed -i '/add_subdirectory\(examples\)/d' CMakeListss.txt。在这种情况下,删除修补正则表达式add_subdirectory\(examples\)
  • 的所有行
  • 运行带有cmake -P script.cmake的CMake脚本,逐行读取文件并删除示例行。

可悲的是,只有最后一个选项适用于跨平台,即在Windows上。