组合 fltk 和 C++ 文件的生成文件
Makefile combining fltk and C++ files
我正在尝试制作一个添加了FLTK库的C++程序。单独地,文件编译。但是 - 我不知道如何将它们合并到一个工作文件中。我认为这可能与制作文件有关:
COMP=g++
COMP_FLAGS=$(-Wall -g -std=c++11)
FL_COMP_FLAGS=$(shell fltk-config --cxxflags)
FL_LINK_FLAGS=$( fltk-config --ldflags)
program: main.o GraphicsLib.o ChaosSpaceMarine.o SpaceMarine.o Tau.o
$(COMP) $(COMP_FLAGS) GraphicsLib.o ChaosSpaceMarine.o SpaceMarine.o Tau.o -o program
main.o: main.cc GraphicsLib.o ChaosSpaceMarine.o SpaceMarine.o Tau.o
$(COMP) $(COMP_FLAGS) $(FL_LING_FLAGS) main.cc GraphicsLib.o ChaosSpaceMarine.o SpaceMarine.o Tau.o -o main.o
GraphicsLib.o: GraphicsLib.cc GraphicsLib.h
$(COMP) $(COMP_FLAGS) $(FL_COMP_FLAGS) -c GraphicsLib.cc
ChaosSpaceMarine.o: ChaosSpaceMarine.cc ChaosSpaceMarine.h Marine.o
$(COMP) $(COMP_FLAGS) ChaosSpaceMarine.cc Marine.o -o ChaosSpaceMarine.o
SpaceMarine.o: SpaceMarine.cc SpaceMarine.h Marine.o
$(COMP) $(COMP_FLAGS) SpaceMarine.cc Marine.o -o SpaceMarine.o
Tau.o: Tau.cc Tau.h Marine.cc
$(COMP) $(COMP_FLAGS) Tau.cc Marine.o -o Tau.o
Marine.o: Statystyki.o Bron.o Pancerz.o
$(COMP) $(COMP_FLAGS) Marine.cc Bron.o Pancerz.o Statystyki.o -o Marine.o
Statystyki.o: Statystyki.cc Statystyki.h
$(COMP) $(COMP_FLAGS) -c Statystyki.cc -o Statystyki.o
Pancerz.o: Pancerz.cc Pancerz.h Item.o
$(COMP) $(COMP_FLAGS) -c Pancerz.cc -o Pancerz.o
Bron.o: Bron.cc Bron.h Item.o
$(COMP) $(COMP_FLAGS) -c Bron.cc -o Bron.o
Item.o: Item.cc Item.h
$(COMP) $(COMP_FLAGS) -c Item.cc -o Item.o
clean:
rm -rf Item.o Bron.o Pancerz.o Statystyki.o Marine.o Tau.o SpaceMarine.o ChaosSpaceMarine.o GraphicsLib.o
所以:Item.o是Bron(武器)和Pancerz(盔甲)的基类。与Statystyki(统计)是海军陆战队的一部分,这是特定ChaosSpaceMarine,SpaceMarine和Tau的基础。GraphicsLib包含多个FL/Fl_。标题,所以我可以制作自己的图形对象。
欢迎在这里提出任何问题和建议!
编辑:
感谢 Lmis 和我的朋友,我更正了我的 makefile,如果有人有类似的问题,我会把它放在上面。
所以现在我只有一个奇怪的错误:
g++ -I/usr/local/include -I/usr/local/include/FL/images -c GraphicsLib.cc
g++ -c Statystyki.cc -o Statystyki.o
g++ -c Item.cc -o Item.o
g++ -c Bron.cc -o Bron.o
g++ -c Pancerz.cc -o Pancerz.o
g++ Marine.cc Bron.o Pancerz.o Statystyki.o -o Marine.o
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [Marine.o] Error 1
我知道它说对 main 有未定义的引用,但这个文件中没有任何地方是这样的引用,所以有什么问题?
一个问题是:
$(COMP) $(COMP_FLAGS) -o main.o GraphicsLib.o ChaosSpaceMarine.o SpaceMarine.o Tau.o
应该是
$(COMP) $(COMP_FLAGS) -o NameOfYourProgram main.o GraphicsLib.o ChaosSpaceMarine.o SpaceMarine.o Tau.o
-o
标志告诉编译器您要为其生成的文件指定什么名称。你在 Makefile 中所说的是,你希望编译器使用对象GraphicsLib.o
编译名为 main.o
的程序,等等。
既然你说
单独地,文件编译。
我假设所有.o
文件都编译得很好,然后这个答案应该可以解决您的问题。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到