2011-06-11 153 views
1

我有一個文件列表(cpp,h,也是cpp/h裏面的子文件夾)。構建cpp應用程序

我不知道如何正確構建它,因爲它沒有任何makefile或者像這樣的純粹(純C++ - 文件)。所以我決定「抓住」正確的gcc參數來構建它。

g++ *.cpp `wx-config --libs` `wx-config --cxxflags` -lGL -lglut -lfkr-skeletal2d 

現在我有一個線。以下是文件列表:

$ ls -p 
AnimationEditor/ Core-Code/ GLRender.cpp GLSprite.cpp Icons/   LGPLv3.txt  MainWindow.h PlayBar.h PopUp.h  TimeLine.h 
BoneEditor/  daten/  GLRender.h GLSprite.h LGPLv3_de.txt MainWindow.cpp PlayBar.cpp PopUp.cpp TimeLine.cpp wxWidgets_Addons/ 

有目錄Core-Code文件:

AnimationManager.cpp AnimationManager.h SkeletalManager.cpp SkeletalManager.h TextureManager.cpp TextureManager.h 

當我使用的gcc行我得到了很多的鏈接錯誤的:

undefined reference to `CSkeletalManager::*** 
undefined reference to `CAnimationManager::*** 

也許,我必須指定Core-Code的文件。我無法理解這個問題。

+0

是的,您必須指定文件,就像您可以將這些文件複製到與其他文件相同的文件夾並再次嘗試編譯,如果僅缺少這些文件,您可能會得到一個乾淨的編譯和鏈接。 – 2011-06-11 11:23:58

回答

2

最好要做的事情是要付出一點努力,並實際創建一套Makefiles;一個頂級的子目錄,以及子目錄的子Makefile。但是如果你想用同樣的方法創建一個命令行,首先用find . -name '*.cpp'替換你的'* .cpp',以便它包含所有*.cpp文件。我認爲在此之後,您將遇到問題,找到*.hpp文件,因此您需要添加一些-I選項,以告知g++在哪裏查找標頭。

因此,像

g++ `find . -name '*.cpp'` -IAnimationEditor -IBoneEdiror -ICore-Code `wx-config --libs` `wx-config --cxxflags` -lGL -lglut -lfkr-skeletal2d 
1

我還補充:Core-Code/*.cpp到命令行。