【问题标题】:How to create two mains in an eclipse C++ project如何在 Eclipse C++ 项目中创建两个主电源
【发布时间】:2010-11-04 03:28:05
【问题描述】:

我们有一个单独运行的程序,使用 execvp 命令执行。所以它需要一个主要的方法,但我相信这会给使用托管制作的 Eclipse 带来问题。我们是否必须将此代码隔离到一个单独的项目中,或者有没有办法将它合并到同一个 eclipse 项目中?

【问题讨论】:

标签: c++ eclipse makefile


【解决方案1】:

为每个具有 main() 函数的可执行文件创建一个项目,并创建一个附加项目来代表整个软件(某种“容器”项目)。 Eclipse 允许您将项目指定为其他项目的依赖项,在这种情况下,您需要设置容器项目以将其他项目列为“引用项目”。

为此,请创建容器项目,然后右键单击左侧列(项目资源管理器)中的项目,然后单击“属性”。将出现一个对话框。选择左侧列表中的“Project References”项,您将看到 Eclipse 当前正在处理的所有项目的列表。选中您的各个可执行文件的项目旁边的框,然后单击“确定”。现在,当您对容器项目执行构建时,Eclipse 应该也会自动对这些依赖项目执行构建。

以这种方式使用子项目时,我(个人)发现创建一个包含容器项目和所有子项目的工作集很有用(这可以使搜索整个软件项目更容易)。

【讨论】:

  • 如何阻止容器项目抱怨它没有'all'或'clean' make 目标?其次,如何指定子项目的构建顺序? (现在我的一组项目包括一个构建所有其他项目所依赖的库的项目,但该库不是首先构建的(命名变幻莫测),这意味着我需要构建容器项目两次)
  • @Urhixidur - 您必须将库标记为使用它的程序的依赖项,但我不记得如何在 Eclipse UI 中临时做到这一点。不过,如果您正在编写自己的 makefile,这非常简单。对于第一个问题,只需定义 make 目标(即使它们实际上没有做任何事情)。
【解决方案2】:

将其保留在同一个项目中,并使用预处理器定义您定义的内容,具体取决于您希望在当前项目中包含的主要类型。这里的 mains 位于同一个文件中,但它们当然可以位于不同的文件中。

#if defined(MAIN_ONE)
int main()
{
    // Do stuff
}
#elif defined(MAIN_TWO)
int main()
{
    // Do some other stuff
}
#endif

【讨论】:

    【解决方案3】:

    如果被调用的 makefile 没有将 2 个 main() 方法编译到同一个可执行文件中,它不会导致问题。我不知道 eclipse 项目是如何处理的——如果它像 VS,其中“项目”表示单个可执行文件或库,而“解决方案”是一组“项目”,那么看起来你需要的不止一个项目。 OTOH,如果“项目”可以包含不同的“子项目”,其中“子项目”是可执行文件或库,那么您应该能够轻松处理。

    【讨论】:

      【解决方案4】:

      我不知道使用 Eclipse 构建系统构建两个主要的任何简单方法。您需要做的最小更改可能是移动到 makefile 并使用 makefile 目标进行构建。

      相反,我建议您转而使用 CMake。 CMake 可用于生成与 eclipse 一起使用的 makefile。使用 CMake 获得的优势是,您可以轻松说明如何构建库并链接库以形成可执行文件。 CMake 可以为 Eclipse、Visual Studio、代码块或 makefile 生成构建(因此您可以使用命令提示符)。

      【讨论】:

        【解决方案5】:

        这是用 C++ 语言构建的。你必须修改它才能得到你的结果。如果您愿意,可以同时做两件事

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-29
          • 2018-07-17
          • 1970-01-01
          • 2015-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-25
          相关资源
          最近更新 更多