2024/03/18(月) [n年前の日記]
#2 [prog] 1つのMakefileでWindowsとLinuxに対応させたい
1つのMakefileで、Windows と Linux の両方に対応させたい。どうしたらいいのだろう。
以下が参考になった。ありがたや。
_【make】Makefile内の記述をWindowsとLinux両対応にする│株式会社シーポイントラボ|浜松のシステム・RTK-GNSS開発
一例。以下のように書いたら動いてくれた。
以下が参考になった。ありがたや。
_【make】Makefile内の記述をWindowsとLinux両対応にする│株式会社シーポイントラボ|浜松のシステム・RTK-GNSS開発
ifeq ($(OS),Windows_NT) # Windows else # Linux #endif
一例。以下のように書いたら動いてくれた。
SRCS = 04_ps3d_bb.c ifeq ($(OS),Windows_NT) # Windows TARGET = 04_ps3d_bb.exe GCC_VERSION=$(shell gcc -dumpversion) ifeq ($(GCC_VERSION),6.3.0) # MinGW gcc 6.3.0 LIBS = -static -lSOIL -lopengl32 -lglu32 -lwinmm -lgdi32 -lglfw3dll -mwindows else # MinGW gcc 9.2.0, MSYS2 LIBS = -static -lSOIL -lopengl32 -lglu32 -lwinmm -lgdi32 -lglfw3 -mwindows endif else # Linux (Ubuntu Linux 22.04 LTS, gcc 11.4.0) TARGET = 04_ps3d_bb LIBS = -lSOIL -lGL -lGLU -lglfw -lm endif all: $(TARGET) $(TARGET): $(SRCS) glbitmfont.h Makefile gcc $< -o $@ $(LIBS) .PHONY: clean clean: rm -f $(TARGET) *.o
◎ OpenGLを使う時のライブラリ指定 :
ついでなので、MinGW gcc や Linux + gcc で、OpenGL, glfw(glfw3), SOIL を使ってるプログラムをビルドする時のライブラリ指定もメモ。
Windowsの場合。
Linux (Ubuntu Linux (22.04|20.04) LTS) の場合。
ちなみに、Ubuntu Linux で SOIL(Simple OpenGL Image Library) や glfw3 を使いたい時はパッケージをインストールするだけで済む。
Windowsの場合。
gcc hoge.c -o hoge.exe -static -lSOIL -lopengl32 -lglu32 -lwinmm -lgdi32 -lglfw3 -mwindows or gcc hoge.c -o hoge.exe -static -lSOIL -lopengl32 -lglu32 -lwinmm -lgdi32 -lglfw3dll -mwindows
Linux (Ubuntu Linux (22.04|20.04) LTS) の場合。
gcc hoge.c -o hoge -lSOIL -lGL -lGLU -lglfw -lm
ちなみに、Ubuntu Linux で SOIL(Simple OpenGL Image Library) や glfw3 を使いたい時はパッケージをインストールするだけで済む。
sudo apt install libsoil-dev sudo apt install libglfw3-dev
[ ツッコむ ]
以上です。