我想要一个通用的 Makefile。
ifeq ($(OS),Windows_NT)
test.exe: test.cpp dog.o
g++ test.cpp dog -lws2_32 -o test.exe
else
test: test.cpp dog.o
g++ test.cpp dog -o main
dog.o: dog.cpp dog.h
g++ -c dog.cpp
这给了我:
Makefile:5: *** 配方在第一个目标之前开始。停止。
有人可以帮我创建吗?
最佳答案
使用声明式风格:
PLAT_FLAGS_Windows_NT = -lws2_32
PLAT_FLAGS = $(PLAT_FLAGS_$(OS))
EXE_NAME_Windows_NT = test.exe
EXE_NAME = $(EXE_NAME_$(OS))
EXECUTABLE_NAME = $(if $(EXE_NAME), $(EXE_NAME), main)
test.exe: test.cpp dog.o
g++ test.cpp dog.o $(PLAT_FLAGS) -o $(EXECUTABLE_NAME)
dog.o: dog.cpp dog.h
g++ -c dog.cpp
注意:不要忘记制表符在 Makefile 中很重要,而 Web 界面不喜欢制表符,因此您可能必须将它们重新添加。
关于c++ - 创建用于编译 C++ 的通用简单 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720301/