【问题标题】:Build cpp application构建 cpp 应用程序
【发布时间】: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 的文件。我无法理解这个问题。

【问题讨论】:

  • 是的,您必须指定文件,就像尝试一样,您可以将这些文件复制到与其他文件相同的文件夹并再次尝试编译,如果只有那些丢失,您可能会得到一个干净的编译和链接。

标签: c++ gcc linker


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2014-01-20
      • 2017-08-05
      • 2012-04-11
      • 2016-09-13
      • 2015-05-31
      相关资源
      最近更新 更多