我假设大多数人都认为我没有尝试自己搜索互联网,但我确实这样做了。我对makefile一无所知,我试图为c ++创建一个。 我只有两个文件:Set.hpp和main.cpp。
这是我错误的makefile。
CC=g++
CFLAGS= --std=c++0x --pedantic -g -Wall -W
LDFLAGS=
EXEC=main
all: $(EXEC)
main: Set.o main.o
$(CC) -o main Set.o main.o $(LDFLAGS)
main.o: main.cpp
$(CC) -o main.o -c main.cpp $(CFLAGS)
Set.o: Set.hpp
$(CC) -o Set.o -c Set.hpp $(CFLAGS)
clean:
rm -rf *.o
mrproper: clean
rm -rf $(EXEC)
我得到的错误只是Make: * no targets. Stop.
。我真的需要这方面的帮助:/提前谢谢你:)
答案 0 :(得分:0)
.hpp
个文件是头文件。他们不被遵守。它们将包含在源文件中。您可以找到有关.hpp
文件和一些相关信息here的更多信息。
现在,从makefile的“工作”版本开始,让我们考虑以下几点。我假设你有两个源文件
1. main.cpp
2. Set.cpp
和一个头文件
1. Set.hpp
在同一目录中。请考虑下面提供的示例文件。
#include <iostream>
#include "Set.hpp"
using namespace std;
int main()
{
call_func();
cout <<"And this is from main.cpp"<<endl<<endl;
return 0;
}
#include <iostream>
#include "Set.hpp"
using namespace std;
int call_func()
{
cout<<"This is from set.cpp"<<endl<<endl;
return 0;
}
#include <iostream>
using namespace std;
int call_func();
CC=g++
CFLAGS= --std=c++0x --pedantic -g -Wall -W
LDFLAGS=
EXEC=main
all: $(EXEC)
main: Set.o main.o
$(CC) -o main Set.o main.o $(LDFLAGS)
main.o: main.cpp
$(CC) -o main.o -c main.cpp $(CFLAGS)
Set.o: Set.cpp # notice the change from .hpp to .cpp
$(CC) -o Set.o -c Set.cpp $(CFLAGS) # notice the change
clean:
rm -rf *.o
mrproper: clean
rm -rf $(EXEC)
之后,输出就像
[sourav@infba01383 so_overflow]# make
g++ -o Set.o -c Set.cpp --std=c++0x --pedantic -g -Wall -W
g++ -o main.o -c main.cpp --std=c++0x --pedantic -g -Wall -W
g++ -o main Set.o main.o
[sourav@infba01383 so_overflow]# make
make: Nothing to be done for `all'.
[sourav@infba01383 so_overflow]# make clean
rm -rf *.o
[sourav@infba01383 so_overflow]#
希望这有帮助!!!