C++を学ぶ
Update 2024.12.25
C++を学ぶ
C++を学ぶ続編です。
VisualStudioを使った時のmake方法を知りたい。
ということで下記に掲載。
Visual StudioでのMakeの利用方法
Windows版のVisual Studioは、通常 MSBuild というビルドシステムを使います。しかし、あえて Unix系の make
と同様の方法でビルドを行いたい場合、Visual Studio付属のツール nmake を使用できます。
また、CMake を利用して Visual Studio 用のソリューションやプロジェクトを生成する方法もあります。
1. nmake を使う方法
Visual Studioには、「Developer Command Prompt for Visual Studio」 や 「x64 Native Tools Command Prompt for Visual Studio」 など、コンパイラとnmakeが使えるコマンドプロンプトが同梱されています。この環境であれば、nmake
(Windows上のmake相当ツール)が利用可能です。
- Developer Command Prompt を起動
スタートメニューから「開発者コマンドプロンプト (Developer Command Prompt)」を探して起動します。Visual Studioのバージョンにより名称が異なる場合があります。 - ソースコードとMakefileを用意
Linuxなどで使っていたMakefile
と同等の記述を、Windows用に微調整します(拡張子は大文字・小文字に関係なくMakefile
のままでOK)。コンパイラの呼び出しがcl
になる点などが主な違いです。 - Makefileの例(nmake用)
# Makefile (Visual Studio + nmake 用の例)
# コンパイラ (Microsoft C/C++ コンパイラ)
CC = cl
# コンパイル時のオプション
CFLAGS = /EHsc /W4
# ターゲット名
TARGET = main.exe
# オブジェクトファイル
OBJ = main.obj mylib.obj
all: $(TARGET)
$(TARGET): $(OBJ)
$(CC) $(CFLAGS) /Fe$@ $(OBJ)
main.obj: main.cpp mylib.h
$(CC) $(CFLAGS) /c main.cpp
mylib.obj: mylib.cpp mylib.h
$(CC) $(CFLAGS) /c mylib.cpp
clean:
del $(TARGET) *.obj
上記では、cl
(Visual C++コンパイラ)を使用し、拡張オプション /EHsc
(例外ハンドリング)や /W4
(警告レベル4)を指定しています。
GCCやClangにおける -std=c++17
や -Wall
のようなオプションと同じ意味合いです。
- コンパイル
同ディレクトリ内にある Makefile を使い、以下を実行します。
nmake
成功すれば
main.exe
が生成されます。
nmake clean
でオブジェクトファイルや実行ファイルを削除できます。
2. CMake を使う方法
Visual Studioには、CMakeプロジェクト を直接開く機能もあります。CMakeで CMakeLists.txt
を用意すれば、Unixライクな make
ベースの感覚を保ちつつ、Visual Studio上でビルドやデバッグを行えます。
例として、CMakeLists.txt
を簡単に示すと下記のようになります。
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# C++17を使う場合
set(CMAKE_CXX_STANDARD 17)
# ソースファイル
add_executable(main
main.cpp
mylib.cpp
)
# インクルードディレクトリを指定(自作ヘッダの場所)
target_include_directories(main PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
ターミナル(Developer Command Promptなど)で
cmake .
と実行すると、Visual Studio用のプロジェクトファイルやソリューション(.sln
)が生成されます。
そのまま cmake --build .
とすると、Visual Studioのビルドシステムを使ってコンパイルが行われ、main.exe
ができます。
3. Visual Studio GUIを使った場合
通常のVisual Studioワークスペース(.slnファイル)でプロジェクトを作成する場合は、cl
や nmake
を手動で呼び出さず、MSBuild
という裏側の仕組みが動きます。
ソースを追加して、ソリューションをビルドするだけでOKです。
もし意図的に nmake
を使いたい場合は、「nmake プロジェクト」や「Makefileプロジェクト」を新規作成する手段も用意されています。
まとめ
-
Developer Command Promptで nmake
Visual Studio付属のコマンドラインツール
cl
とnmake
を使って、Linuxライクな Makefile ビルドを行う -
CMake
Unix系と同様に
CMakeLists.txt
を使う。生成された Visual Studio プロジェクトを開いたり、cmake --build
コマンドでビルドする -
Visual Studio のプロジェクト(.vcxprojなど)
GUIからソリューションをビルドすると、
MSBuild
が裏で動く。標準的なやり方
Windowsで「make」風のビルドを行いたいなら、もっとも手軽なのは Developer Command Prompt + nmake です。Linuxで用意した Makefile を大きく書き換えずに済むケースもありますが、コンパイラオプションの違いや、パス設定などを調整してください。
一方で大規模なプロジェクトやクロスプラットフォーム対応なら CMake が有力候補になります。
VisualStudioを使った標準のmake方法を調べてみようと思います。
広告
© 2024 Kenslog.com. All Rights Reserved.