Этот SP будет только только удалять собственные файлы резервных копий SQL-сервера или собственные файлы отчета об обслуживании (в целях безопасности)
, Поскольку Smink предположил, что можно использовать
xp_cmdshell 'del <filename>'
С верными полномочиями на папке.
Вы можете хранить свои файлы в разных каталогах, если хотите, но в этом нет необходимости. Добавьте файл или каталог в репозиторий CVS один раз, и CVS сохранит его на неопределенный срок. С этого момента вы можете обновить его, зарегистрировать, что угодно. Если вы не добавите объектный файл в репозиторий, CVS его не коснется. Если вы хотите добавить целое дерево каталогов, и у вас есть привычка хранить там объекты, просто очистите его перед тем, как это сделать.
Make - замечательный инструмент, но у него есть несколько явных недостатков. То, что вы описываете, является одной из классических проблем: Make хорош в использовании источника там , чтобы сделать что-то здесь , но не наоборот. Вот несколько способов сделать то, что вы пытаетесь сделать.
A) Запустите make в вашем двоичном каталоге:
... all: myexecutable TAGS myexecutable: myobject.o $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) VPATH = /home/myproject/src ...
cd ~ / myproject / bin
make -f ../src/makefile
B) Поместите объекты в каталог bin с помощью грубой силы:
$(BIN_DIR)%.o: %.cc $(CXX) $(CXXFLAGS) -c -o $@ $^
Это создаст вам проблему с Makefile.depend, которую вы можете решить несколькими способами.
C) Изучите более продвинутые техники Make. Возможно, вам пока не стоит пробовать это.
Если вы хотите изучить make, руководство GNU make очень хорошо, и как справочник, и как учебное пособие. Возможно, вы захотите использовать команду patsubst . Ниже приводится урезанная версия одного из моих собственных make-файлов, в котором он используется:
OUT = bin/csvfix.exe
CC = g++
IDIR = inc
ODIR = obj
SDIR = src
INC = -Iinc -I../alib/inc
LIBS = ../alib/lib/alib.a -lodbc32
_OBJS = csved_atable.o \
csved_case.o \
csved_cli.o \
csved_command.o \
csved_date.o \
OBJS = $(patsubst %,$(ODIR)/%,$(_OBJS))
$(ODIR)/%.o: $(SDIR)/%.cpp
$(CC) -c $(INC) -o $@ $< $(CFLAGS)
$(OUT): $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
strip $(OUT)
clean:
rm -f $(ODIR)/*.o $(OUT)
Ваша структура каталогов кажется разумной.
Я бы сделал явное правило для запуска компилятора, например
TARGET_DIR=bin
SRC_DIR=src
CXX=g++
CXXFLAGS=
ETC=
OBJS=$(TARGET_DIR)/test.o
all: $(OBJS)
$(TARGET_DIR)/%.o: $(SRC_DIR)/%.cc
$(CXX) -c -o $@ $(CXXFLAGS) $(ETC) $<
Используйте automake и autoconf для сборки проекта.
Что касается структуры файлов, просто посмотрите на любое большое приложение C ++ с открытым исходным кодом. Любое приложение KDE будет хорошо в этом отношении. Если вы найдете приложение, которое еще лучше использует C ++ и Python.
Почему бы не пойти на eclipse, который довольно популярен и удобен для управления крупными проектами. Вы можете создать новый проект в eclipse, импортировать-экспортировать код в проект из других проектов, также будет управлять версиями за вас и т. Д. Нет необходимости писать свои файлы make, eclipse сделает это за вас с указанными вами настройками в графическом интерфейсе. Если вы участвуете в проекте C ++, просто установите плагин CDT поверх eclipse, и все готово.