организуйте проект и укажите каталог для объектных файлов в Make-файле

Этот SP будет только только удалять собственные файлы резервных копий SQL-сервера или собственные файлы отчета об обслуживании (в целях безопасности)

, Поскольку Smink предположил, что можно использовать

xp_cmdshell 'del <filename>'

С верными полномочиями на папке.

6
задан halfer 16 June 2019 в 09:20
поделиться

5 ответов

  1. Вы можете хранить свои файлы в разных каталогах, если хотите, но в этом нет необходимости. Добавьте файл или каталог в репозиторий CVS один раз, и CVS сохранит его на неопределенный срок. С этого момента вы можете обновить его, зарегистрировать, что угодно. Если вы не добавите объектный файл в репозиторий, CVS его не коснется. Если вы хотите добавить целое дерево каталогов, и у вас есть привычка хранить там объекты, просто очистите его перед тем, как это сделать.

  2. 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. Возможно, вам пока не стоит пробовать это.

2
ответ дан 17 December 2019 в 00:12
поделиться

Если вы хотите изучить 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)
8
ответ дан 17 December 2019 в 00:12
поделиться
  1. Ваша структура каталогов кажется разумной.

  2. Я бы сделал явное правило для запуска компилятора, например

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) $<
2
ответ дан 17 December 2019 в 00:12
поделиться

Используйте automake и autoconf для сборки проекта.

Что касается структуры файлов, просто посмотрите на любое большое приложение C ++ с открытым исходным кодом. Любое приложение KDE будет хорошо в этом отношении. Если вы найдете приложение, которое еще лучше использует C ++ и Python.

0
ответ дан 17 December 2019 в 00:12
поделиться

Почему бы не пойти на eclipse, который довольно популярен и удобен для управления крупными проектами. Вы можете создать новый проект в eclipse, импортировать-экспортировать код в проект из других проектов, также будет управлять версиями за вас и т. Д. Нет необходимости писать свои файлы make, eclipse сделает это за вас с указанными вами настройками в графическом интерфейсе. Если вы участвуете в проекте C ++, просто установите плагин CDT поверх eclipse, и все готово.

-5
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: