对标记在makefile中的工作方式感到困惑
Confused about how flags work in makefile
我有2个文件:main.cpp,其中包括foo.h。我需要一个用-std=c++11标志编译它们的makefile,但我不知道为什么第一个makefile设置了标志,但第二个makefile没有。
:
CXX=g++
CXXFLAGS=-g -std=c++11 -Wall -pedantic
BIN=prog
SRC=$(wildcard *.cpp)
OBJ=$(SRC:%.cpp=%.o)
all: $(OBJ)
$(CXX) -o $(BIN) $^
%.o: %.c
$(CXX) $@ -c $<
clean:
rm -f *.o
rm $(BIN)
不工作:(c++11实际上没有标记,所以不能使用c++11)
CXX=g++
CXXFLAGS=-g -std=c++11
all:
g++ main.cpp -o main
由于您的第一个makefile没有从.cpp
生成.o
的规则,因此使用了隐式规则。该规则看起来像:
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $@
你可以在这里找到GNU Make中的所有隐式规则。
第二个makefile不使用这个规则,因为all
规则直接编译main
,而不是依赖于main.o
。由于使用的是显式规则,因此也需要显式地使用该变量。
all:
$(CXX) $(CXXFLAGS) main.cpp -o main
相关文章:
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何解决在负数的情况下程序以相同方式工作的问题?
- 在 Eclipse 中添加库的工作方式是否与在 Visual Studio 中相同?
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 我的随机生成器是否不工作,或者我决定人/骨架是否击中对手的方式是否有错误
- OpenGL应用程序在不同的计算机上的工作方式不同
- >= <= 没有按照我使用它们的方式工作,我在哪里搞砸了?
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- 程序按执行方式工作,直到我向其添加析构函数为止
- wait_until在主线程而不是主线程中的工作方式不同吗? c ++
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 简单的计数和求和函数没有按照我预期的方式工作
- 查找函数在unordered_map中的工作方式是搜索键值
- 尝试使用 Qt 库中的 QPixmap 将图像拆分为多个块。关于他的复制方法的工作方式,我有什么不明白的吗?
- 容器类别在STL中的工作方式
- Unity 的 HLSL/Cg 预处理器工作方式错误?
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- 这种计算大数的方式如何工作
- 如何以编程方式从工作线程获得父线程和兄弟线程的CPU利用率