我有两个没有主
的文件我想在一个makefile中编译这些
我的makefile是;
CXX = g++
CXXFLAGS_W = -Werror -Wunused-variable -Wunused-value -Wunused-function \
-Wfloat-equal -Wall
CXXFLAGS_M = -ansi -pedantic-errors
CXXFLAGS = ${CXXFLAGS_M} ${CXFLAGS_W}
all: main
./main
当我使用make make X时,编译器会给出一些错误“undefined reference to main”。由于这个原因,我想要新的makefile。 X可以是任何名称。
答案 0 :(得分:1)
您通常会遇到以下情况:
X.o: X.cpp X.h
g++ -c -o X.o X.cpp # or $(CXX) $(CXXFLAGS) -c -o ...
用你需要的任何其他标志。 -c
告诉编译器只编译而不是编译和链接,并且通常不直接编译头文件,而是在cpp文件中#include
编译。
这是一个makefile,它将两个独立的源文件合并为一个可执行文件:
xy: x.o y.o
g++ -o xy x.o y.o
x.o: x.cpp x.hpp y.hpp
g++ -c -o x.o x.cpp
y.o: y.cpp y.hpp
g++ -c -o y.o y.cpp
x.cpp
文件包括x.hpp
和y.hpp
,而y.cpp
仅包含y.hpp
。最终的可执行文件是xy
。
第一条规则从两个目标文件构建可执行文件。第二个和第三个规则构建了两个目标文件,这是我认为你在问题中要求的。