2015-09-01 166 views
0

我使用cmake創建一個項目,我使用ExternalProject,包括依賴關係。該依賴關係有其自己的CMakeLists.txt,並在其中包含CMakeLists.txt它包含兩個以上的目錄,使用add_subdirectory,這些目錄是示例,我想刪除它們。排除外部項目的子目錄

例如:

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

裏面的foobarCMakeLists.txtadd_subdirectory(example1)add_subdirectory(example1)

我想從構建中刪除這兩個示例。

回答

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上。

+0

依賴項沒有禁用示例的選項。任何使用這個PATCH_COMMAND的例子?我找不到任何類似的東西。 – Secafo