构建 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 代码

如何通过 webpack 从生产构建中删除 cpp 文件?

如何在链接到静态库的 DEV-CPP 中构建控制台应用程序时解决对 _imp__** 的未定义引用?

如何在没有 CMake 的情况下构建 yaml-cpp

未定义的参考链接 yaml-cpp 程序与 mingw-w64 + cmake