构建 cpp 应用程序
Posted
技术标签:
【中文标题】构建 cpp 应用程序【英文标题】:Build cpp application 【发布时间】:2011-06-11 11:12:18 【问题描述】:我有一个文件列表(cpp、h 以及包含 cpp/h 的子文件夹)。
我不确定如何正确构建它,因为它没有任何 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
的文件。我无法理解这个问题。
【问题讨论】:
是的,您必须指定文件,就像尝试一样,您可以将这些文件复制到与其他文件相同的文件夹并再次尝试编译,如果只有那些丢失,您可能会得到一个干净的编译和链接。 【参考方案1】:最好的 事情是花一点力气并实际创建一组 Makefile;一个顶层,以及子目录的子 Makefile。但是,如果您想使用与创建命令行相同的方法,首先将您的“*.cpp”替换为find . -name '*.cpp'
,以便它包含所有*.cpp
文件。我认为在那之后您将无法找到*.hpp
文件,因此您需要添加一些-I
选项来告诉g++
在哪里查找标题。
类似
g++ `find . -name '*.cpp'` -IAnimationEditor -IBoneEdiror -ICore-Code `wx-config --libs` `wx-config --cxxflags` -lGL -lglut -lfkr-skeletal2d
【讨论】:
【参考方案2】:我还要在命令行中添加:Core-Code/*.cpp
。
【讨论】:
以上是关于构建 cpp 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Ogre3D : 构建示例程序 (Samples/Tutorial/Bootstrap.cpp)
使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码