c++ - 创建用于编译 C++ 的通用简单 Makefile

标签 c++ makefile

我想要一个通用的 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/

相关文章:

c++ - 借助定界符对重复字符串执行 vector push_back

c++ - cmake 生成错误的 makefile

java - 如何将第 3 方库添加到 Android AOSP 构建中?

c++ - GDB 找不到调试符号

Makefile:在构建任何目标之前创建文件

linux - shell 脚本: error during comparison (Linux)

c++ - 如何在不调用对象构造函数的情况下声明对象数组

c++ - wxWidgets - 通过 DLL 添加项目到 sizer

c++ - 员工网络服务框架

c++ - 是什么导致了这种格式字符串攻击?