cmake从目录中删除自定义输出结果

时间:2019-01-03 11:43:16

标签: cmake

我要告诉cmake添加一个make eradicate选项,以便可以从默认make clean旁边的自定义目录中的模拟中删除输出数据。 我搜索了一段时间,但未成功搜索许多问题。

.
├── build
├── CMakeLists.txt
├── data
│   ├── fig
│   ├── npz
│   └── text
├── include
│   ├── functions.h
│   ├── kuramoto.h
│   └── random_seedo.h
├── scripts
│   ├── distance1.py
│   ├── distance.py
│   ├── functions.py
│   ├── plc.py
│   ├── plk.py
│   ├── plp.py
│   ├── plr.py
│   └── run.py
└── src
    ├── dat
    │   └── C.dat
    ├── functions.cpp
    ├── kuramoto.cpp
    └── main.cpp

cmake_minimum_required(VERSION 3.0)
project(test_cmake)

set(CMAKE_CXX_FLAGS "-std=c++11 -O2 -lm")
set(CMAKE_CXX_COMPILER /usr/bin/g++)

file(GLOB SOURCES "src/*.cpp")
include_directories(include)

add_executable(prog ${SOURCES})

find_package(GSL REQUIRED)
target_link_libraries(prog GSL::gsl GSL::gslcblas)

所以我需要像平时手写的makefile那样消除:

eradicate:
    rm -r ../data/npz/* ../data/fig/* ../data/text/*
.PHONY: eradicate

我不会每次都键入rm命令。有时我需要删除许多文件类型和目录。

1 个答案:

答案 0 :(得分:0)

您可以使用add_custom_target

add_custom_target(eradicate
  COMMAND rm -r "${CMAKE_BINARY_DIR}/../data/npz/*" "${CMAKE_BINARY_DIR}/../data/fig/*" "${CMAKE_BINARY_DIR}/../data/text/*"
)

请注意,add_custom_target的目标始终是过时的,因此它将次运行。