我要告诉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命令。有时我需要删除许多文件类型和目录。
答案 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
的目标始终是过时的,因此它将每次运行。