0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C++言語用のMakefileテンプレート

Posted at

#Windows MinGW GCC(c++)用のMakefileテンプレート

ひな型は、AIで作成したものを修正しました。
Windows OS MinGW
実行ファイルはa.exeで、デバッグ用はdebug.exeです。
不要なオプションがあると思います。随時更新したいと思います。

# AtCoder Makefile
# main.cpp a.exe
#

# コンパイラとフラグの設定
CXX = g++.exe
CXXFLAGS = -Wall -Wextra -std=c++20 -O2 -march=native
CXXFLAGS += -finput-charset=UTF-8 -fexec-charset=CP932
# CXXFLAGS += -static-libgcc -static-libstdc++
CXXFLAGS += -Wuninitialized -fverbose-asm -fdiagnostics-color=always
# CXXFLAGS += -fsanitize=undefined

# デバッグ用のフラグ
DEBUG_FLAGS = -g3 -D_GLIBCXX_DEBUG -Wall -Wextra 
DEBUG_FLAGS += -O0 -std=c++20 -march=native
# DEBUG_FLAGS += -fsanitize=address  # ASanを有効にする場合 
DEBUG_FLAGS += -Wuninitialized
# DEBUG_FLAGS += -static-libgcc -static-libstdc++

# インクルードパスとライブラリパス
INCLUDE_DIRS = -IC:/Users/etsuk/ac-library
# LIBRARY_DIRS = -L/path/to/lib -L/path/to/another/lib
# LIBRARIES = -lmylib -lanotherlib

# 実行ファイルの名前
TARGET = a.exe
DEBUG_TARGET = debug.exe  # デバッグ用の実行ファイル

# ソースファイルとオブジェクトファイル
SRCS = main.cpp
OBJS = $(SRCS:.cpp=.o)
DEBUG_OBJS = $(SRCS:.cpp=.debug.o)
ASM_FILES = $(SRCS:.cpp=.s)
PREPROCESSED_FILES = $(SRCS:.cpp=.i)

# ビルド対象
all: $(TARGET)
# all: $(TARGET) $(ASM_FILES) $(PREPROCESSED_FILES)

# 実行ファイルのリンク
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) $(LIBRARY_DIRS) -o $(TARGET) $(OBJS) $(LIBRARIES)

# 各.cppファイルをコンパイルして.oファイルを生成
%.o: %.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE_DIRS) -c $< -o $@

# デバッグ用コンパイル
debug: $(DEBUG_TARGET)

$(DEBUG_TARGET): $(DEBUG_OBJS)
	$(CXX) $(DEBUG_FLAGS) $(INCLUDE_DIRS) -o $(DEBUG_TARGET) $(DEBUG_OBJS)

# デバッグ用オブジェクトファイルを生成
%.debug.o: %.cpp
	$(CXX) $(DEBUG_FLAGS) $(INCLUDE_DIRS) -c $< -o $@

# デバッグ実行
debug-run: $(DEBUG_TARGET)
	./$(DEBUG_TARGET)

# 各.cppファイルをコンパイルして.sファイルを生成
%.s: %.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE_DIRS) -S $< -o $@

# 各.cppファイルをプリプロセッサのみ実行して.iファイルを生成
%.i: %.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE_DIRS) -E $< -o $@

# 実行ルール
run: $(TARGET)
	./$(TARGET)

# アセンブリファイルを生成
asm: $(ASM_FILES)

# プリプロセッサ出力を生成
preprocess: $(PREPROCESSED_FILES)

# ojtest
ojtest: $(TARGET)
	oj test

# クリーンアップ
clean:
	rm -f $(OBJS) $(TARGET) $(DEBUG_TARGET) $(DEBUG_OBJS) $(ASM_FILES) $(PREPROCESSED_FILES)

# .PHONYターゲット
.PHONY: all clean asm preprocess debug debug-run
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?