VSCode 설정 참고 : 현재 탭 디렉토리의 Makefile을 한 번에 호출합니다.
메모장 ++에서 VS 코드로
지금까지 다양한 텍스트 편집기를 사용해 왔으며 만족스러운 편집기는 Notepad++
뿐이었습니다.
그러나 최근 VS Code
과 拡張機能
의 조합은 동등한 기능을 실현할 수 있었기 때문에 입력 완성이 우수한 VS Code
로 전환했습니다.
메모장++
지금까지 텍스트 편집에서 프로그래밍, LaTeX까지 모두 Notepad++에서 왔습니다.NppExec
라는 플러그인이 우수했으며 Notepad++에 터미널 환경을 제공했습니다.
또한 Follow ${CURRENT_DIRECTORY}
라는 신성한 옵션이있었습니다.
이 기능은 아래 터미널의 디렉토리가 현재 열려있는 탭의 계층 구조가된다는 것입니다.
또한 F6
키로 등록 된 명령을 실행할 수있었습니다.
따라서 항상 make
를 등록하고 현재 디렉토리를 신경 쓰지 않고 F6
를 누르면 컴파일 할 수있었습니다.
LaTeX 용 Makefile
현재 디렉토리의 모든 .tex
파일을 컴파일합니다.
MakefileFILE = $(wildcard *.tex)
PDF = $(FILE:.tex=.pdf)
DVI = $(FILE:.tex=.dvi)
.PHONY:run
run:$(PDF) $(DVI)
%.pdf: %.dvi
dvipdfmx $<
# cmd /c start $@
%.dvi: %.tex
platex $<
# pbibtex $*
#クリーンして実行
.PHONY: all
all: clean run
#クリーン
.PHONY:clean
clean:
rm -f $(PDF) $(DVI)
FILE = $(wildcard *.tex)
PDF = $(FILE:.tex=.pdf)
DVI = $(FILE:.tex=.dvi)
.PHONY:run
run:$(PDF) $(DVI)
%.pdf: %.dvi
dvipdfmx $<
# cmd /c start $@
%.dvi: %.tex
platex $<
# pbibtex $*
#クリーンして実行
.PHONY: all
all: clean run
#クリーン
.PHONY:clean
clean:
rm -f $(PDF) $(DVI)
cmd /c start $@
코멘트 아웃을 제거하면 컴파일 후 PDF 열기 pbibtex $*
는 .bib 용 C++ 용 Makefile
cpp 컴파일 용.
Makefile
###################################################
# Makefile (*.cppをコンパイルする場合)
# コンパイルしたいソースがあるフォルダと同じところに置く
# ディレクトリ階層図
# this
# |--- *.cpp (コンパイルしたいソースファイル)
# |--- Makefile
# |--- run.exe (生成される実行ファイル)
# |--- obj (生成されるフォルダ)
# |--- *.o (生成されるオブジェクトファイル)
# |--- *.d (生成される依存関係ファイル)
#
# 実行コマンド
# make (更新されたファイルのみコンパイル)
# make all (クリーンしてビルド)
# make clean (クリーン)
###################################################
AR = ar
ARFLAGS = rus
CXX = g++
CXXFLAGS = -g -MMD -MP -Wall -Wextra -Winit-self -Wno-unused-parameter -std=c++11 -O3
RM = rm -f
LDFLAGS =
LIBS =
INCLUDE =
#実行ファイル
TARGET = ./run.exe
#オブジェクトファイル保存フォルダ
OBJDIR = ./obj
#ソースファイル
SOURCES = $(wildcard *.cpp)
#オブジェクトファイル
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
#依存関係ファイル
DEPENDS = $(OBJECTS:.o=.d)
#実行ファイル作成
$(TARGET): $(OBJECTS) $(LIBS)
$(CXX) -o $@ $^ $(LDFLAGS)
#ソースファイルをコンパイル
$(OBJDIR)/%.o: %.cpp
@if [ ! -d $(OBJDIR) ];\
then echo "mkdir -p $(OBJDIR)";mkdir -p $(OBJDIR);\
fi
$(CXX) $(CXXFLAGS) $(INCLUDE) -o $@ -c $<
#クリーンしてビルド
.PHONY: all
all: clean $(TARGET)
#クリーン
.PHONY:clean
clean:
$(RM) $(OBJECTS) $(DEPENDS) $(TARGET)
-include $(DEPENDS)
※ Makefile의 들여 쓰기는 모두 Tab입니다.
Copipe는 4 개의 공간을 가지므로
\t
로 바꿉니다.참고 문헌: 간단하고 응용이 효과적인 makefile과 그 해설
VS 코드
VS Code는 원래 터미널을 가지고 있지만
nppExec
와 같은 현재 탭을 따르는 기능은 없습니다.Ctrl+@
에서 터미널을 열면 특별히 설정하지 않은 경우 $HOME
에서 열 수 있습니다.그러나 확장 기능
terminal-command-keys
을 사용하면 nppExec
에 가깝습니다.확장 프로그램을 설치 한 후
Ctrl+K, Ctrl+S
의 keybindings.json
에 다음을 추가하십시오. {
"key": "F5",
"command": "terminalCommandKeys.run",
"args": {
"cmd": "cd `dirname \"${file}\"`;make"
}
},
{
"key": "ctrl+F5",
"command": "terminalCommandKeys.run",
"args": {
"cmd": "cd `dirname \"${file}\"`"
}
},
{
"key": "shift+F5",
"command": "terminalCommandKeys.run",
"args": {
"cmd": "!!"
}
},
이 예에서
F5
를 누르면 현재 탭의 디렉토리에서 make
를 실행합니다.Ctrl + F5
에서 현재 탭의 디렉토리로 이동할 수 있습니다.이렇게하면 터미널 디렉토리를 의식하지 않고
make
를 실행할 수 있습니다.Shift + F5
에서 이전 명령을 실행할 수 있습니다. (!!
: 이전 명령 실행을 나타냅니다.)Ctrl+,
에서 settings.json
에 다음 설정이 필요합니다."terminal.integrated.commandsToSkipShell":
항목 목록에 "terminalCommandKeys.run"
를 추가하십시오.기타 설정
settings.json
"files.autoGuessEncoding": true,
"latex-workshop.latex.autoBuild.onSave.enabled": false,
"latex-workshop.latex.autoBuild.run": "never",
"terminal.integrated.shell.windows": "C:\\cygwin64\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"],
"editor.renderWhitespace": "all",
"editor.fontSize": 13,
"terminal.integrated.fontSize": 13,
"window.title": "${activeEditorLong} - VS Code",
keybindings.json
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditor"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditor"
},
확장 기능
Reference
이 문제에 관하여(VSCode 설정 참고 : 현재 탭 디렉토리의 Makefile을 한 번에 호출합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/birdwatcher/items/2f5d8fae50e2eee2d0ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)