【发布时间】:2020-02-08 20:46:12
【问题描述】:
我有两个文件“create-exercise.cpp”和“exercise.hpp”。我想编写一个 makefile 来使用 gnu++17 和 g++ 来编译它们。 exercise.hpp 包含在 create-exercise.cpp 中。我只想从 create-exercise.cpp 中获取二进制文件。我会使用的命令是g++ -std=gnu++17 create-exercise.cpp -o create-exercise,它运行良好。我尝试在make文件中使用以下内容。
CXXFLAGS=-Wall -std=gnu++17
create-exercise: create-exercise.cpp exercise.hpp
但生成了以下 g++ -Wall -std=gnu++17 create-exercise.cpp exercise.hpp -o create-exercise 我不希望 exercise.hpp 包含在编译命令中。我也尝试改用以下内容。
CXXFLAGS=-Wall -std=gnu++17
create-exercise.o: create-exercise.cpp exercise.hpp
生成g++ -Wall -std=gnu++17 -c -o create-exercise.o create-exercise.cpp。我不想要-c 标志。因为当我尝试运行create-exercise.o 时会导致权限被拒绝错误。我也尝试了以下方法:
CXXFLAGS=-Wall -std=gnu++17
create-exercise.o: create-exercise.cpp exercise.hpp
$(CXX) $(CXXFLAGS) create-exercise.cpp -o create-exercise.o
但是当我编辑exercise.hpp 时,make 会说'create-exercise.o' is up to date. 并且不会重新编译它。我该怎么办?
【问题讨论】:
标签: c++ c++11 makefile gnu-make